利用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, 新浪微博, 腾讯微博...)需要你在手机上设置中心绑定了登录账户, 才能正常显示。