- 在iOS6.0之后,系统也提供了API实现分享功能,目前支持的分享途径参照
UIActivityType
。 - 部分分享途径,需要登录对应的账号。例如,通过腾讯微博实现分享,需要登录腾讯微博账号。
- 如果需要保存到系统相册,需要设置对应的隐私权限。
<key>NSPhotoLibraryUsageDescription</key>
<string>打开相册</string>
- 由于系统默认的是英文显示,如果需要显示中文,则需要修改对应的布尔值。
<key>CFBundleAllowMixedLocalizations</key>
<true/>
UIActivityViewController
- 1、导入框架
Social.framework
- 2、 设置分享的内容,并将内容添加到数组中
NSString *shareText = @"我的个人博客";
UIImage *shareImage = [UIImage imageNamed:@"shareImage.png"];
NSURL *shareUrl = [NSURL URLWithString:@"http://blog.csdn.net/flyingkuikui"];
NSArray *activityItemsArray = @[shareText,shareImage,shareUrl];
CustomActivity *customActivity = [[CustomActivity alloc]initWithTitle:@"wangsk" ActivityImage:[UIImage imageNamed:@"custom.png"] URL:[NSURL URLWithString:@"http://blog.csdn.net/flyingkuikui"] ActivityType:@"Custom" ShareContext:activityItemsArray];
NSArray *activityArray = @[customActivity];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItemsArray applicationActivities:activityArray];
activityVC.modalInPopover = YES;
if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
UIActivityViewControllerCompletionWithItemsHandler itemsBlock = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){
NSLog(@"activityType == %@",activityType);
if (completed == YES) {
NSLog(@"completed");
}else{
NSLog(@"cancel");
}
};
activityVC.completionWithItemsHandler = itemsBlock;
}else{
UIActivityViewControllerCompletionHandler handlerBlock = ^(UIActivityType __nullable activityType, BOOL completed){
NSLog(@"activityType == %@",activityType);
if (completed == YES) {
NSLog(@"completed");
}else{
NSLog(@"cancel");
}
};
activityVC.completionHandler = handlerBlock;
}
[self presentViewController:activityVC animated:YES completion:nil];
- 6、运行结果,如图,其中红色圆圈部分就是自定义的CustomActivity
支持的分享类型和途径
- 截止iOS10.3.3,系统分享功能支持的分享途径。
UIActivityTypePostToFacebook NS_AVAILABLE_IOS(6_0);
UIActivityTypePostToTwitter NS_AVAILABLE_IOS(6_0);
UIActivityTypePostToWeibo NS_AVAILABLE_IOS(6_0);
UIActivityTypeMessage NS_AVAILABLE_IOS(6_0);
UIActivityTypeMail NS_AVAILABLE_IOS(6_0);
UIActivityTypePrint NS_AVAILABLE_IOS(6_0);
UIActivityTypeCopyToPasteboard NS_AVAILABLE_IOS(6_0);
UIActivityTypeAssignToContact NS_AVAILABLE_IOS(6_0);
UIActivityTypeSaveToCameraRoll NS_AVAILABLE_IOS(6_0);
UIActivityTypeAddToReadingList NS_AVAILABLE_IOS(7_0);
UIActivityTypePostToFlickr NS_AVAILABLE_IOS(7_0);
UIActivityTypePostToVimeo NS_AVAILABLE_IOS(7_0);
UIActivityTypePostToTencentWeibo NS_AVAILABLE_IOS(7_0);
UIActivityTypeAirDrop NS_AVAILABLE_IOS(7_0);
UIActivityTypeOpenInIBooks NS_AVAILABLE_IOS(9_0);
代码地址:
https://github.com/FlyingKuiKui/ShareTest.git