美文网首页iOS开发(OC)
UIActivityController调用IOS系统自带的分享

UIActivityController调用IOS系统自带的分享

作者: Bobo_Ma | 来源:发表于2018-03-12 15:23 被阅读39次

       利用UIActivityViewController实现系统原生分享文本、图片、链接,不需要三方SDK,支持自定义分享,可以分享到微博、微信、QQ、信息、邮件、备忘录、通讯录等等。

1.创建要分享的数据内容,加在一个数组 activityItems里。

NSString *textToShare = @"要分享的文字";

    //分享使用默认本地图片

    //UIImage *imageToShare = [UIImage imageNamed:@"shareImage"];

    //分享使用网络图片   网络图片一定要小否则可能加载不出来

    UIImage *imageToShare = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"网络图片地址"]]];

    //分享链接

    NSURL *urlToShare = [NSURL URLWithString:@"要分享的链接"];

//要确定textToShare, imageToShare, urlToShare均不为空,否则不会弹出系统分享界面

    NSArray *activityItems = @[textToShare, imageToShare, urlToShare];

2. 创建分享视图控制器,初始化UIActivityViewController

/* ActivityItems  在执行activity中用到的数据对象数组。数组中的对象类型是可变的,并依赖于应用程序管理的数据。例如,数据可能是由一个或者多个字符串/图像对象,代表了当前选中的内容。Activities  是一个UIActivity对象的数组,代表了应用程序支持的自定义服务。这个参数可以是nil。*/

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];

3.当弹出视图框的时候,我们发现上边很多图标是我们用不到,我们可以将用不到的图标去掉,用到的函数是

activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook,UIActivityTypePostToTwitter, UIActivityTypePostToWeibo,UIActivityTypeMessage,UIActivityTypeMail,UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList,UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypePostToTencentWeibo,UIActivityTypeAirDrop,UIActivityTypeOpenInIBooks];

4.初始化点击回调方法

UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(NSString *activityType,BOOL completed,NSArray *returnedItems,NSError *activityError){

            NSLog(@"activityType :%@", activityType);

            if (completed){

                NSLog(@"completed");}

            else{

                NSLog(@"cancel");}

        };

        // 初始化completionHandler,当post结束之后(无论是done还是cancell)该blog都会被调用

        activityVC.completionWithItemsHandler = myBlock;

5.在展现view controller时,必须根据当前的设备类型,使用适当的方法。在iPad上,必须通过popover来展现view controller。在iPhone和iPodtouch上,必须以模态的方式展现。

    UIViewController * rootVc = [UIApplication sharedApplication].keyWindow.rootViewController;

    [rootVc presentViewController:activityVC animated:TRUE completion:nil];

6.注意:分享功能(Facebook, Twitter, 新浪微博, 腾讯微博...)需要你在手机上设置中心绑定了登录账户, 才能正常显示。

相关文章

网友评论

    本文标题:UIActivityController调用IOS系统自带的分享

    本文链接:https://www.haomeiwen.com/subject/oubnfftx.html