最近做的APP,需要分享功能,于是试了一下友盟的社会化组件。总的感觉还不错,虽然没有比直接集成官方SDK简便多少,但是后台统计的功能不错,所以最后还是用了。官网的文档说明已经挺详细了,不过章节组织得有点乱,本文总结一下
获取友盟app key
首先去友盟注册一个app key,然后下载它的SDK。这里要注意的是,SDK分为IDFA版和非IDFA版,前者需要设置一个默认的广告页,否则有可能被苹果拒绝上架,我觉得有点风险,所以最后选的是非IDFA的版本。由于目前IDFA是唯一标识设备的最准确手段,所以这个版本有可能在识别新用户时不如IDFA版准确,不过我觉得可以接受
然后友盟提供了多套组件,除了最基础的应用统计,还有社会化组件,推送组件等,我只用了它的基础SDK和社会化SDK。app key是共通的
集成微信
包括微信好友,朋友圈,收藏
首先需要去微信开放平台注册应用,然后会得到app id和app secret。我之前做过微信公众号的二次开发,对微信的这套玩法已经比较熟悉了。针对移动应用,微信开放平台提供了登陆、分享、支付等接口,我们主要用的是分享接口,这是最基础的接口,目前不需要认证开发者身份,只需要在平台上注册就可以了
得到app id和app secret之后,就可以接入了。用原生SDK和友盟SDK都差不多,iOS APP集成都离不开URL Types这一套,所以首先需要设置URL Types,填上app secret
然后就改用友盟提供的API了,不用微信原生的
#import "UMSocial.h"
#import "UMSocialWechatHandler.h"
[UMSocialData setAppKey:@"友盟的AppKey"];
[UMSocialWechatHandler setWXAppId:@"微信app id" appSecret:@"微信app secret" url:nil];
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [UMSocialSnsService handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [UMSocialSnsService handleOpenURL:url];
}
以上是需要写在AppDelegate里的代码,唯一需要注意的是,setWXAppId: appSecret: url这个方法里,url可以传nil。因为我们后续分享出去的URL都是每个页面特殊的,所以不在这里填。如果这里填了url,则会作为默认的跳转链接
-(void) socialButtonPressed
{
NSArray *targetSns = @[UMShareToWechatSession, UMShareToWechatTimeline, UMShareToWechatFavorite];
NSString *url = @"http://xxx.com/分享的消息点击后进入的url";
NSString *title = @"自定义title";
[UMSocialData defaultData].extConfig.wechatSessionData.url = url;
[UMSocialData defaultData].extConfig.wechatTimelineData.url = url;
[UMSocialData defaultData].extConfig.wechatFavoriteData.url = url;
[UMSocialData defaultData].extConfig.wechatSessionData.title = title;
[UMSocialData defaultData].extConfig.wechatFavoriteData.title = title;
[UMSocialSnsService presentSnsIconSheetView:self appKey:nil shareText:@"内容文字" shareImage:[UIImage imageNamed:@"内容图片"] shareToSnsNames:targetSns delegate:nil];
}
这里是点击分享按钮后的代码,targetSns是分享的目标,还可以按需添加其他的社交平台,这里我只添加了微信。然后需要分别设置聊天、朋友圈、收藏的URL,朋友圈不需要设置标题,因为分享到朋友圈的消息没有标题。API里是有的,但是其实无效
另外如果用户的设备上没有装微信,那么分享界面也就不会出现微信的图标,否则的话苹果会认为是诱导下载,而拒绝上架
集成新浪微博
感觉集成新浪微博更麻烦一点,因为集成微信基本通过代码就完成了,而新浪微博需要在3个地方配置,比较零散。可能是因为我没有用新浪微博的原生SDK做过接入,所以直接用友盟的SDK感觉不是很能把握
首先当然也是要去新浪平台注册应用,拿到app key和app secret。然后配置URL Types,不过这里用的app key不是刚才我们自己去新浪申请的app key,而是友盟的app key
然后需要在新浪的管理后台配置OAuth的回调地址,根据友盟的文档,把安全域名配置为sns.whalecloud.com,回调地址配置成http://sns.whalecloud.com/sina2/callback,这也是让我觉得比较奇怪的地方,按理说应该是配置成我们应用自己的地址才比较合理。在新浪的文档里找了半天,也没看到这个地址需要实现什么逻辑,就先按友盟介绍的来吧
然后是代码:
#import "UMSocial.h"
#import "UMSocialSinaHandler.h"
[UMSocialData setAppKey:@"xxxx"];
[UMSocialSinaHandler openSSOWithRedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [UMSocialSnsService handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [UMSocialSnsService handleOpenURL:url];
}
模式和前面接入微信相当类似,也看出使用第三方组件的好处,至少handleOpenURL和openURL不需要写两遍了
然后是分享的代码:
NSArray *targetSns = @[UMShareToSina];
[UMSocialSnsService presentSnsIconSheetView:self appKey:nil shareText:@"测试文字\nhttp://www.baidu.com" shareImage:[UIImage imageNamed:@"image_placeholder"] shareToSnsNames:targetSns delegate:nil];
这里的区别是不需要设置url和title了,因为分享到微博的模式不同于微信,没有显示title和url的地方,这个是平台差异,不是使用友盟的原因,即使用新浪原生的SDK,也是一样做不到。所以我希望在分享的内容里添加一个链接,就需要直接写在shareText里
经过上面的配置,就可以把内容分享到新浪微博了。这里如果用户设备上有微博,就会使用SSO直接分享;如果没有安装,则会跳转到web页面使用OAuth授权。这主要是因为新浪微博为第三方应用提供了OAuth授权的方式,而微信现在貌似只对公众号提供了OAuth接入,移动应用还是只能通过应用跳转
但是现在有个问题,我发现我前面在新浪申请的app key和app secret从头到尾就没用过,这明显是不合理的。果然分享出去的微博,来源都是“友盟社会化组件”,后来找了一圈,发现还需要在友盟的后台配置一下自己的app key和app secret,然后就OK了
高级功能
除了前面的最基本的分享,还可以自定义分享页面的样式(基础的方式是友盟已经提供了XIB和弹出方式),也可以调用更底层的直接分享接口(无页面),另外还有一些delegate方法,有需要的话可以自行实现
分享到:
相关推荐
Flutter 截图、QQ分享、微信分享、微博分享
集成友盟社会化组件,实现微信,微博,qq登陆以及分享。
因微信分享和QQ微信微博的登陆功能都需要应用提交审核并通过才可使用, 故暂时不可用. 但DEMO里有相关代码. 可测试QQ,QQ空间,新浪微博,邮件, 短信的分享功能. 有问题欢迎留言讨论
友盟 微信 QQ 微博登录的加jar包 ,配合自己发的博客使用,
友盟分享集成QQ/微信/微博的自定义面板分享,希望可以给予你帮助
qq、微信、新浪微博分享、登录非友盟封装
友盟分享,只集成微信、QQ、微博分享,其他分享移除掉。
android友盟微信微博分享
测试友盟社会化分享。 实现 QQ、QQ空间、腾讯微博、新浪微博、微信、朋友圈的分享
最新的社会化分享2018年5月18号更新,其中包含新浪微博,QQ好友,QQ空间,微信朋友圈,支付宝,钉钉,都是些现阶段主流的通讯方式,处理了微信分享后留在微信,没有回调的问题解决方案,供自己今后快速开发。...
友盟实现微博、微信、QQ第三方登陆,很实用很方便
友盟集成的社会化分享组件,非常好用,集成了各种平台(分享到朋友圈、分享到微博、分享到qq空间等等)的组件,十分方便。
友盟QQ空间、QQ、腾讯微博、新浪分享demo
ShUmengSdk 封装友盟 第三方 分享 登录 微信支付
um基本案例,基本demo如果有过开发经验的就不需要下载了
Android友盟集成QQ、微信、微博等第三方登录与分享 Dome
通过友盟集成微信分享的整个详细流程,亲测...解决了友盟和微信文档含糊不清的问题.还有一些坑,一年前写的东西,最近来看还是有人下载的,希望能够帮助一些有需要的朋友。特意把积分降为1,让更多的人更快更顺利的对接
友盟分享(微信,朋友圈)Demo
提供给android初级开发分享的朋友们,绝对有用哦