持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
引言
- 系统原生 :UIActivityViewController、Social Framework
- 友盟(第三方分享平台)
- 案例:小程序分享blog.csdn.net/z929118967/…
如果App分享类型需要支持多媒体(声音、视频、文件等),需要支持的平台很多,推荐使用友盟分享。
I 系统原生: UIActivityViewController
1.1 支持的分享平台
iOS8之后App可以通过Share Extension提供分享入口,例如微信App的Share Extension对应的平台ID是@"com.tencent.xin.sharetimeline"。
可通过completionWithItemsHandler回调获取本机可用的Share Extension的bundle Id 。
隐藏默认的平台
activityVC.excludedActivityTypes = @[UIActivityTypeOpenInIBooks,UIActivityTypeAirDrop];
支持的平台:
typedef NSString * UIActivityType NS_TYPED_EXTENSIBLE_ENUM;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToFacebook API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToTwitter API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToWeibo API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED; // SinaWeibo
UIKIT_EXTERN UIActivityType const UIActivityTypeMessage API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeMail API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePrint API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeCopyToPasteboard API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeAssignToContact API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeSaveToCameraRoll API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeAddToReadingList API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToFlickr API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToVimeo API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToTencentWeibo API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeAirDrop API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeOpenInIBooks API_AVAILABLE(ios(9.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeMarkupAsPDF API_AVAILABLE(ios(11.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeSharePlay API_AVAILABLE(ios(15.4)) __TVOS_PROHIBITED;
1.2 设置回调block,获取分享相关信息
//设置回调block,获取分享相关信息
UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError) {
if (completed){
NSLog(@"分享完成:%@",activityType);
//分享完成:com.tencent.xin.sharetimeline
}
};
activityVC.completionWithItemsHandler = myBlock;
1.3 案例
- (void)textToShare{
NSString *textToShare = @"公众号:iOS逆向";
UIImage *imageToShare = [UIImage imageNamed:@"icon"];
NSURL *urlToShare = [NSURL URLWithString:@"https://blog.csdn.net/z929118967?type=blog"];
NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
}
各平台支持的的分享内容:
II 系统原生: Social Framework
#import <Social/Social.h> 可以自己绘制UI,满足了很多个性化的需求。
导入Social.framework:
III 集成第三方分享平台
集成社会化分享(代理商展业二维码)https://kunnan.blog.csdn.net/article/details/124340777