oscarimonbox
8/5/2016 - 8:57 AM

Share para social o compartir con aplicaciones

Share para social o compartir con aplicaciones

    func topViewController()-> UIViewController{
        var topViewController:UIViewController = UIApplication.shared.keyWindow!.rootViewController!
        
        while ((topViewController.presentedViewController) != nil) {
            topViewController = topViewController.presentedViewController!;
        }
        
        return topViewController
    }
    
    func showShareActivity(msg:String?, image:UIImage?, url:String?, sourceRect:CGRect?){
        var objectsToShare = [Any]()
        
        if let url = url {
            objectsToShare.append(url as Any)
        }
        
        if let image = image {
            objectsToShare.append(image as Any)
        }
        
        if let msg = msg {
            objectsToShare.append(msg as Any)
        }
        
        let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
        activityVC.modalPresentationStyle = .popover
        
        activityVC.popoverPresentationController?.sourceView = topViewController().view
        if let sourceRect = sourceRect {
            activityVC.popoverPresentationController?.sourceRect = sourceRect
        }
        
        topViewController().present(activityVC, animated: true, completion: nil)
    }
lista de tipos incluidos:
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIActivity_Class/#//apple_ref/doc/constant_group/Built_in_Activity_Types

-(void) shareContent: (UITapGestureRecognizer*) sender{
    NSString *textToShare = NSLocalizedString(@"share_text", nil);
    NSURL *linkToShare = [NSURL URLWithString:self.detailedNew.link];
    
    NSArray *objectsToShare = @[textToShare, linkToShare];
    
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
    
    SI SE QUIERE SE PUEDEN ANULAR OTROS COMO UIActivityTypePostToFacebook,
                                   UIActivityTypePostToTwitter,
                                   UIActivityTypeMessage,
                                   UIActivityTypeCopyToPasteboard,
                                   UIActivityTypeMail
    
    NSArray *excludeActivities = @[UIActivityTypePrint,
                                   UIActivityTypeAddToReadingList];
    
    activityVC.excludedActivityTypes = excludeActivities;
    
    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {
        activityVC.popoverPresentationController.sourceView = self.view;

        [self presentViewController:activityVC
                           animated:YES
                         completion:nil];
        
    } else {
        [self presentViewController:activityVC animated:YES completion:nil];
    }
    
}