前言:
学习笔记
大致流程: (只记录 pod集成)1.集成SDK 1.1 自动集成 (Pod) [集成链接](https://developer.umeng.com/docs/66632/detail/67204#h2--sdk4) 1.2 手动集成 1.2.1 下载对应SDK (分享) 1.2.2 导入到项目中 1.2.3 添加项目配置 1.2.4 加入依赖系统库 2.配置SSO白名单:设置白名单为的是能够获取第三方平台的授权 3.配置URL Scheme: 目的是能够在分享结束后跳回到自己的app中 4.初始化设置 5.调用分享方法
我习惯用Pod集成,感觉很方便。如果需要手动可以参考手动集成文档。也可以参考官方的Pod集成。
一、集成SDK(Pod)
**依赖库** pod 'UMCCommon' pod 'UMCSecurityPlugins'
根据需求添加(平台对应的SDK,这里只集成 “微信” 和 “新浪微博”)
**分享 SDK,根据需要添加平台对应SDK** # U-Share SDK UI模块(分享面板,建议添加) pod 'UMCShare/UI' # 集成微信(精简版0.2M) pod 'UMCShare/Social/ReducedWeChat' # 集成微信(完整版14.4M) pod 'UMCShare/Social/WeChat' # 集成QQ/QZone/TIM(精简版0.5M) pod 'UMCShare/Social/ReducedQQ' # 集成QQ/QZone/TIM(完整版7.6M) pod 'UMCShare/Social/QQ' # 集成新浪微博(精简版1M) pod 'UMCShare/Social/ReducedSina' # 集成新浪微博(完整版25.3M) pod 'UMCShare/Social/Sina' # 集成Facebook/Messenger pod 'UMCShare/Social/Facebook' # 集成Twitter pod 'UMCShare/Social/Twitter' # 集成支付宝 pod 'UMCShare/Social/AlipayShare' # 集成钉钉 pod 'UMCShare/Social/DingDing' # 集成豆瓣 pod 'UMCShare/Social/Douban' # 集成人人 pod 'UMCShare/Social/Renren' # 集成腾讯微博 pod 'UMCShare/Social/TencentWeibo' # 集成易信 pod 'UMCShare/Social/YiXin' # 集成Flickr pod 'UMCShare/Social/Flickr' # 集成Kakao pod 'UMCShare/Social/Kakao' # 集成Tumblr pod 'UMCShare/Social/Tumblr' # 集成Pinterest pod 'UMCShare/Social/Pinterest' # 集成Instagram pod 'UMCShare/Social/Instagram' # 集成Line pod 'UMCShare/Social/Line' # 集成WhatsApp pod 'UMCShare/Social/WhatsApp' # 集成有道云笔记 pod 'UMCShare/Social/YouDao' # 集成印象笔记 pod 'UMCShare/Social/EverNote' # 集成Google+ pod 'UMCShare/Social/GooglePlus' # 集成Pocket pod 'UMCShare/Social/Pocket' # 集成DropBox pod 'UMCShare/Social/DropBox' # 集成VKontakte pod 'UMCShare/Social/VKontakte' # 集成邮件 pod 'UMCShare/Social/Email' # 集成短信 pod 'UMCShare/Social/SMS'
根据需求添加(平台对应的SDK,这里只集成 “微信” 和 “新浪微博”)
# U-Share SDK UI模块(分享面板,建议添加) pod 'UMCShare/UI' # 集成微信(精简版0.2M) pod 'UMCShare/Social/ReducedWeChat' # 集成新浪微博(精简版1M) pod 'UMCShare/Social/ReducedSina'
二、.配置SSO白名单:设置白名单为的是能够获取第三方平台的授权
1.了解一下
在iOS9以上系统需要增加一个可跳转App的白名单,即LSApplicationQueriesSchemes
否则将在SDK判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。2.具体操作
在项目中的info.plist中加入应用白名单,右键info.plist选择source code打开(plist具体设置在Build Setting -> Packaging -> Info.plist File可获取plist路径) 请根据选择的平台对以下配置进行缩减:
LSApplicationQueriesSchemes weixin sinaweibohd sinaweibo sinaweibosso weibosdk weibosdk2.5 mqqapi mqq mqqOpensdkSSoLogin mqqconnect mqqopensdkdataline mqqopensdkgrouptribeshare mqqopensdkfriend mqqopensdkapi mqqopensdkapiV2 mqqopensdkapiV3 mqqopensdkapiV4 mqzoneopensdk wtloginmqq wtloginmqq2 mqqwpa mqzone mqzonev2 mqzoneshare wtloginqzone mqzonewx mqzoneopensdkapiV2 mqzoneopensdkapi19 mqzoneopensdkapi mqqbrowser mttbrowser tim timapi timopensdkfriend timwpa timgamebindinggroup timapiwallet timOpensdkSSoLogin wtlogintim timopensdkgrouptribeshare timopensdkapiV4 timgamebindinggroup timopensdkdataline wtlogintimV1 timapiV1 alipay alipayshare dingtalk dingtalk-open linkedin-sdk2 linkedin-sdk laiwangsso yixin yixinopenapi line fbapi fb-messenger-api fbauth2 fbshareextension twitterauth kakaofa63a0b2356e923f3edd6512d531f546 kakaokompassauth storykompassauth kakaolink kakaotalk-4.5.0 kakaostory-2.9.0 pinterestsdk.v1 tumblr evernote en enx evernotecid evernotemsg youdaonote ynotedictfav com.youdao.note.todayViewNote ynotesharesdk gplus readitlater pocket-oauth-v1 fb131450656879143 en-readitlater-5776 com.ideashower.ReadItLaterPro3 com.ideashower.ReadItLaterPro com.ideashower.ReadItLaterProAlpha com.ideashower.ReadItLaterProEnterprise vk vk-share vkauthorize
3.配置URL Scheme: 目的是能够在分享结束后跳回到自己的app中
URL Scheme是通过系统找到并跳转对应app的设置,通过向项目中的info.plist文件中加入URL types可使用第三方平台所注册的appkey信息向系统注册你的app,当跳转到第三方应用授权或分享后,可直接跳转回你的app。
4.初始化设置
初始化U-Share及第三方平台
设置各个分享平台的AppKey,统一调用这个方法,platform为平台名称(注意:QQ平台仅需将appID作为U-Share的appKey参数传进即可)在AppDelegate.m中设置如下代码:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [UMConfigure initWithAppkey:UM_APPKEY channel:nil]; }
. 平台注册
- (void)configUSharePlatforms { /* 设置微信的appKey和appSecret [微信平台从U-Share 4/5升级说明]http://dev.umeng.com/social/ios/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3#1_1 */ [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:nil]; /* 设置分享到QQ互联的appID * U-Share SDK为了兼容大部分平台命名,统一用appKey和appSecret进行参数设置,而QQ平台仅需将appID作为U-Share的appKey参数传进即可。 100424468.no permission of union id [QQ/QZone平台集成说明]http://dev.umeng.com/social/ios/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3#1_3 */ [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1105821097"/*设置QQ平台的appID*/ appSecret:nil redirectURL:@"http://mobile.umeng.com/social"]; /* 设置新浪的appKey和appSecret [新浪微博集成说明]http://dev.umeng.com/social/ios/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3#1_2 */ [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954" appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"https://sns.whalecloud.com/sina2/callback"]; ..... 其他的APP分享平台类似,不列举........ }
设置系统回调
// 支持所有iOS系统 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响 BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation]; if (!result) { // 其他如支付等SDK的回调 } return result; }
五、分享的消息类型
分享目前主要支持的类型有:
- 网页类型(包含 标题+描述+icon 的卡片,点击会进入配置的url)
- 图片
- 文本
- 表情(GIF图片,即Emotion类型,只有微信支持)
- 图文(包含一张图片和一段文本)
- 视频(只支持视频URL、缩略图及描述)
- 音乐(只支持音乐URL、缩略图及描述)
自定义分享类型,qq和微信不支持图文分享,只能分享图片或者文字其中一种分享文本
- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType { //创建分享消息对象 UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject]; //设置文本 messageObject.text = @"社会化组件UShare将各大社交平台接入您的应用,快速武装App。"; //调用分享接口 [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) { if (error) { NSLog(@"************Share fail with error %@*********",error); }else{ NSLog(@"response data is %@",data); } }]; }
2.分享图片
- (void)shareImageToPlatformType:(UMSocialPlatformType)platformType { //创建分享消息对象 UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject]; //创建图片内容对象 UMShareImageObject *shareObject = [[UMShareImageObject alloc] init]; //如果有缩略图,则设置缩略图 shareObject.thumbImage = [UIImage imageNamed:@"icon"]; [shareObject setShareImage:@"https://mobile.umeng.com/images/pic/home/social/img-1.png"]; //分享消息对象设置分享内容对象 messageObject.shareObject = shareObject; //调用分享接口 [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) { if (error) { NSLog(@"************Share fail with error %@*********",error); }else{ NSLog(@"response data is %@",data); } }]; }
3.分享图文(新浪支持,微信/QQ仅支持图或文本分享)
- (void)shareImageAndTextToPlatformType:(UMSocialPlatformType)platformType { //创建分享消息对象 UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject]; //设置文本 messageObject.text = @"社会化组件UShare将各大社交平台接入您的应用,快速武装App。"; //创建图片内容对象 UMShareImageObject *shareObject = [[UMShareImageObject alloc] init]; //如果有缩略图,则设置缩略图 shareObject.thumbImage = [UIImage imageNamed:@"icon"]; [shareObject setShareImage:@"https://www.umeng.com/img/index/demo/1104.4b2f7dfe614bea70eea4c6071c72d7f5.jpg"]; //分享消息对象设置分享内容对象 messageObject.shareObject = shareObject; //调用分享接口 [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) { if (error) { NSLog(@"************Share fail with error %@*********",error); }else{ NSLog(@"response data is %@",data); } }]; }
4.分享网页
- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType { //创建分享消息对象 UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject]; //创建网页内容对象 UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]]; //设置网页地址 shareObject.webpageUrl =@"http://mobile.umeng.com/social"; //分享消息对象设置分享内容对象 messageObject.shareObject = shareObject; //调用分享接口 [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) { if (error) { NSLog(@"************Share fail with error %@*********",error); }else{ NSLog(@"response data is %@",data); } }]; }
5.分享音乐
- (void)shareMusicToPlatformType:(UMSocialPlatformType)platformType { //创建分享消息对象 UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject]; //创建音乐内容对象 UMShareMusicObject *shareObject = [UMShareMusicObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]]; //设置音乐网页播放地址 shareObject.musicUrl = @"http://c.y.qq.com/v8/playsong.html?songid=108782194&source=yqq#wechat_redirect"; // shareObject.musicDataUrl = @"这里设置音乐数据流地址(如果有的话,而且也要看所分享的平台支不支持)"; //分享消息对象设置分享内容对象 messageObject.shareObject = shareObject; //调用分享接口 [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) { if (error) { NSLog(@"************Share fail with error %@*********",error); }else{ NSLog(@"response data is %@",data); } }]; }
6.分享视频
- (void)shareVedioToPlatformType:(UMSocialPlatformType)platformType
{
//创建分享消息对象
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];//创建视频内容对象 UMShareVideoObject *shareObject = [UMShareVideoObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]]; //设置视频网页播放地址 shareObject.videoUrl = @"http://video.sina.com.cn/p/sports/cba/v/2013-10-22/144463050817.html"; // shareObject.videoStreamUrl = @"这里设置视频数据流地址(如果有的话,而且也要看所分享的平台支不支持)"; //分享消息对象设置分享内容对象 messageObject.shareObject = shareObject; //调用分享接口 [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) { if (error) { NSLog(@"************Share fail with error %@*********",error); }else{ NSLog(@"response data is %@",data); } }]; } 7 分享微信表情 8 分享微信小程序
学习参考文章
1.ios友盟分享初级总结
2.iOS友盟分享的使用总结
3.友盟分享(精简版)
4.iOS - 友盟分享和三方授权(QQ,微博,微信等)6.9.4