iOS 社会化分享方案总结
来源:互联网 发布:佛山企业排名优化 编辑:程序博客网 时间:2024/05/15 13:25
点击上方“iOS开发”,选择“置顶公众号”
关键时刻,第一时间送达!
一、系统原生 UIActivityViewController
优缺点
优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包
缺点:UI可定制性差,只能使用系统提供的固定样式,长相如下。分享的类型受限,只能分享text、url、image。
UIActivityViewController分享界面
使用:
NSString *textToShare = @"要分享的文本内容";
UIImage *imageToShare = [UIImage imageNamed:@"iosshare.jpg"];
NSURL *urlToShare = [NSURL URLWithString:@"http://www.baidu.com"];
NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
activityItems是要分享的内容,包括文字、图片、网址。但是要注意的是,不是所有平台都支持这三种内容的分享,例如微信,不能同时分享图片和网址,文字不能直接往外分享,下图是几个平台分享概略
各平台分享概略
当弹出视图框的时候,我们发现上边很多图标是我们用不到,我们可以将用不到的图标去掉,只要设置以下属性:
activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook,UIActivityTypeAirDrop];
设置回调block,可以在分享之后成功或失败后做事情,
UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError) {
if (completed){
NSLog(@"completed");
}
};
activityVC.completionWithItemsHandler = myBlock;
二、系统原生Social Framework
优缺点
优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包。UI可以自己绘制,满足了很多个性化的需求。
缺点:分享界面的UI需要开发者自己绘制,增加了工作量。分享的类型受限,只能分享text、url、image。
使用
导入Social.framework
#import
//创建分享的控制器
SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
if (composeVc == nil){
NSLog(@"未安装软件");
return;
}
if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
NSLog(@"软件未配置登录信息");
return;
}
//添加分享的文字、图片、链接
[composeVc setInitialText:@"要分享的文本内容"];
[composeVc addImage:[UIImage imageNamed:@"choice_highlight"]];
[composeVc addURL:[NSURL URLWithString:@"http://www.baidu.com"]];
//弹出分享控制器
[self presentViewController:composeVc animated:YES completion:nil];
//监听用户点击了取消还是发送
composeVc.completionHandler = ^(SLComposeViewControllerResult result){
if (result == SLComposeViewControllerResultCancelled) {
NSLog(@"点击了取消");
} else {
NSLog(@"点击了发送");
}
};
系统只提供了下面几种分享平台:
SLServiceTypeTwitter;
SLServiceTypeFacebook;
SLServiceTypeSinaWeibo;
SLServiceTypeTencentWeibo;
SLServiceTypeLinkedIn;
实际可以根据id来分享到更多平台,如微信:
NSString *socialType = @"com.tencent.xin.sharetimeline";
SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:socialType];
可以这么使用的原因是:iOS8之后系统推出的Share Extension,不是系统实现了微信分享,而是微信App的Share Extension提供了分享入口。所以这个不是私有API,可以放心使用,想获取手机中装的App的所有Share Extension的方法。只需调用下面一句代码。。
SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
看看控制台输出,手机内所有可用的Share Extension的bundle Id 都出来了。
三、友盟等第三方分享平台
优缺点
优点:开发者可以按照第三方文档自己定制分享界面UI、功能。分享的类型可以自由选择,除了text、url、image。还有其他格式多媒体(声音、视频、文件等)可供选择。
缺点:需要去友盟以及各个分享平台注册繁杂的账号、导入臃肿的SDK包。配置跳转白名单。
使用
友盟分享使用文档及SDK下载(http://dev.umeng.com/social/ios/operation)
四、OpenShare
优缺点
优点:开发者可以自己定制分享界面UI、功能。分享的类型可以自由选择,除了text、url、image。还有其他格式多媒体(声音、视频、文件等)可供选择。
缺点:需要配置跳转白名单。
使用
实现原理介绍
http://www.gfzj.us/series/openshare/
github代码和demo地址
https://github.com/100apps/openshare
总结
这四种分享方案,各有优缺点,没有最好的分享方案,只有最适合你App需求的方案。
如果你的App界面需要定制化,分享类型需要支持多媒体(声音、视频、文件等),分享平台只限于微信、QQ、微博、人人、支付宝,使用openshare。如果需要支持的平台很多,使用友盟分享。
如果分享的类型只限于text、image、url,对界面要求不高,系统原生的UIActivityViewController就可以,使用UIActivityViewController。如果界面需要定制化,使用Social Framework。
除了第一种方案UIActivityViewController不需要自己绘制界面以外,其他方案均要自己绘制分享弹出菜单,针对以上问题,我写了一个界面和功能高度可定制化的轮子IFMShare(Swift版)供大家使用。
推荐
IFMShare(Swift版)使用简单、优雅,界面和功能高度可定制化。支持单行滚动、双行滚动、多行、九宫格、头视图、尾视图等多种样式,分享功能可以一个平台名直接调用Share Extension,也可以使用各平台SDK或者OpenShare自定义分享功能。欢迎前去issue、pull request、star,代码示例如下:
IFMShareView *shareView = [[IFMShareView alloc] initWithItems:@[IFMPlatformNameSms,IFMPlatformNameEmail,IFMPlatformNameQQ,IFMPlatformNameWechat] itemSize:CGSizeMake(80,100) DisplayLine:YES];
//设置分享内容
[shareView addText:@"分享测试"];
[shareView addURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[shareView addImage:image];
[shareView showFromControlle:self];
部分自定义界面展示
图片展示
GIF展示
动图展示
参考文章:
《使用系统自带的UIActivityViewController和UIActivity进行内容分享》
新手指南:使用 Social Framework 以及 UIActivityViewController
iOS通过UIActivityViewController实现原生分享功能
UIActivityViewController 和 SLComposeViewController
程序内分享到微信
来源:檀羽冲
www.jianshu.com/p/71499300a133
iOS开发整理发布,转载请联系作者授权
【点击听劲爆情歌】
- iOS 社会化分享方案总结
- iOS 社会化分享方案总结
- IOS 使用百度社会化分享组件 个别问题解决方案
- iOS社会化分享
- IOS友盟 社会化分享 > 社会化iOS组件 > 分享集成
- IOS友盟 社会化分享 > 社会化iOS组件 > 分享集成
- IOS集成ShareSDK社会化分享
- iOS社会化分享-iOS系统分享,shareSDK分享,Umeng分享
- IOS 百度社会化分享注意点
- phonegap百度社会化分享-插件ios
- iOS友盟社会化分享完全攻略
- iOS入门编程之分享、社会化登录
- iOS友盟社会化分享完全攻略
- Android项目总结之社会化分享
- Android项目总结之社会化分享
- [转]Android项目总结之社会化分享
- Android项目总结之社会化分享
- 几种社会化分享工具总结
- iOS跑步软件开发-从无到有
- 视音频基础知识
- .
- iOS 11封杀32位应用,不少开发者宁愿放弃
- iOS 复制知识点总结
- iOS 社会化分享方案总结
- iOS 团队编程规范
- BLE和经典蓝牙的区别
- 月薪3000她是如何买房买车 原因竟是。。。。
- bootstrap tree 中文 api
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
- 17090201_Win7(64位)下卸载/删除CentOS7系统
- Mohican_9/25 几个特殊关键字
- 苹果又有大动作!App Store要支持微信支付了