小编收集了各大博主写的一个关于原生分享和三方分享的优缺点。摘抄几个比较有用的对比图,如下图所示。
具体使用系统UIActivityViewController代码如下:
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
NSString *textToShare = @"分享famisafe";//需要分享的文本内容
UIImage *imageToShare = [UIImage imageNamed:@"logo"];//需要分享的图片
NSURL *urlToShare = [NSURL URLWithString:@"https://famisafe.wondershare.com"];//需要分享的URL
NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
// 禁用分享渠道
activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];
// 分享之后的回调
activityVC.completionWithItemsHandler = ^(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
if (completed) {
NSLog(@"成功分享,分享平台%@",activityType);
}else{
NSLog(@"取消分享");
};
};
[self presentViewController:activityVC animated:true completion:nil];
}
针对UIActivityType也有很多种可分享类型,具体如下:
该对象将提供的内容发布到Facebook上的用户墙上。
UIActivityType const UIActivityTypePostToFacebook
该对象将提供的内容发布到用户的Twitter提要。
UIActivityType const UIActivityTypePostToTwitter
该对象将提供的内容发布到用户的微博上。
UIActivityType const UIActivityTypePostToWeibo // SinaWeibo
该对象将提供的内容发布到消息应用程序。
UIActivityType const UIActivityTypeMessage
该对象将提供的内容发布到新的电子邮件中。
UIActivityType const UIActivityTypeMail
对象打印提供的内容。
UIActivityType const UIActivityTypePrint
对象将提供的内容复制到粘贴板。
UIActivityType const UIActivityTypeCopyToPasteboard
对象将图像分配给联系人。
UIActivityType const UIActivityTypeAssignToContact
对象将图像或视频分配给用户的照相机卷。
UIActivityType const UIActivityTypeSaveToCameraRoll
对象将URL添加到Safari的阅读列表中。
UIActivityType const UIActivityTypeAddToReadingList
对象将提供的图像发布到用户的Flickr帐户。
UIActivityType const UIActivityTypePostToFlickr
该对象将提供的视频发布到用户的Vimeo帐户。
UIActivityType const UIActivityTypePostToVimeo
该对象将提供的内容发布到用户的腾讯微博上。
UIActivityType const UIActivityTypePostToTencentWeibo
该对象通过AirDrop提供所提供的内容。
UIActivityType const UIActivityTypeAirDrop
对象打开iBooks中的内容。
UIActivityType const UIActivityTypeOpenInIBooks
PDF内容
UIActivityType const UIActivityTypeMarkupAsPD
针对不同的Activity类型也有所可以上传的类型 比如 分享的邮件的时候 是不可以上传图片的。具体支持的数据类型如下图。