最近做的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方法,有需要的话可以自行实现
分享到:
相关推荐
在移动应用开发中,友盟社会化组件是一款广泛使用的工具,它为开发者提供了便捷的方式来整合社交功能,如微信、微博和QQ等平台的登录与分享。本文将深入探讨友盟社会化组件的集成方法、核心功能以及如何利用这些功能...
本文将深入探讨如何在Flutter应用中实现截图、QQ分享、微信分享以及微博分享的功能。 **截图功能** 在Flutter中,我们可以利用`image_picker`插件来实现屏幕截图。首先,用户通过调用`ImagePicker`的`...
友盟为开发者提供了一站式的统计分析、推送、社会化分享等服务,其中社会化分享功能允许用户方便地将应用内的内容分享到各类社交网络,增加应用的曝光度。在标题提到的DEMO中,虽然微信分享和QQ微信微博的登录功能...
本文将详细讲解如何使用友盟提供的微信、QQ、新浪微博登录的jar包,以及如何将其整合到自己的应用程序中。 友盟是一家专注于移动互联网服务的公司,提供了丰富的SDK和服务,包括用户登录、数据分析、消息推送等。在...
友盟作为一个提供社会化分享服务的平台,为开发者提供了方便地集成QQ、微信、微博等主流社交应用的分享功能。本文将详细介绍如何使用友盟SDK实现自定义面板的分享功能。 首先,你需要在友盟官网注册一个开发者账号...
"swift-qq微信新浪微博分享登录非友盟封装"这个项目提供了一种解决方案,它允许开发者在不依赖友盟(U-Union)的情况下,独立实现这三大社交平台的分享和登录功能。以下是对这个知识点的详细说明: 1. **Swift开发*...
2. **分享功能**:友盟社会化组件支持多种社交平台的分享,包括微信、QQ、微博等。DEMO会展示如何创建分享内容,设置分享目标平台,以及处理分享后的回调事件,这对于增加应用的传播效果至关重要。 3. **评论功能**...
在移动应用开发中,友盟分享是一个常用的社交分享平台,它允许开发者轻松地将内容分享到微信、QQ、微博等主流社交媒体。这个压缩包文件"ShareTest2"可能包含了一个集成友盟分享功能的示例项目,用于帮助开发者理解和...
- 接口调用时机:确保在主线程中进行友盟的初始化和调用,避免出现ANR(Application Not Responding)错误。 - 用户隐私:在获取用户信息后,应遵循相关法律法规,妥善处理用户数据。 - 版本更新:及时关注友盟SDK的...
最新的社会化分享2018年5月18号更新,其中包含新浪微博,QQ好友,QQ空间,微信朋友圈,支付宝,钉钉,都是些现阶段主流的通讯方式,处理了微信分享后留在微信,没有回调的问题解决方案,供自己今后快速开发。...
友盟社会化分享是针对这一需求提供的一种高效解决方案,它整合了多个主流的社交媒体平台,包括新浪微博、QQ好友、QQ空间、微信朋友圈、支付宝以及钉钉,极大地简化了开发者在应用中实现分享功能的复杂度。...
对于微博分享,除了基本的初始化和设置参数,还需要在分享之前进行授权操作。你可以使用`UMSocialService`的`getPlatformApi`方法获取微博平台对象,然后调用`authorize`方法进行授权。 至此,我们已经掌握了在...
1. **多平台支持**:友盟社会化组件SDK覆盖了众多流行的社交网络,如微信、QQ、新浪微博、QQ空间、豆瓣、支付宝等,使得开发者无需分别对接各个平台的API,大大简化了开发工作。 2. **一键分享**:通过友盟SDK,...
5. **调用分享接口**:使用友盟SDK提供的方法启动分享操作,这通常会弹出一个分享选择器,让用户选择要分享到哪个社交平台。 6. **处理回调**:在分享操作完成后,友盟SDK会回调指定的方法,告诉开发者分享的结果,...
友盟社会化分享Demo是一款用于帮助开发者集成和测试社交平台分享功能的应用示例,特别是针对QQ空间、QQ、腾讯微博和新浪微博这些热门的社交网络。这个Demo主要展示了如何使用友盟提供的SDK来实现用户在Android应用中...
### 友盟微信分享和微信支付冲突解决 在开发基于Android平台的应用时,经常会遇到集成第三方SDK(Software Development Kit)的问题。特别是在同时集成微信分享功能和微信支付功能时,可能会出现两者之间的兼容性...
友盟社会化分享组件是针对Android开发者推出的一款高效、便捷的工具,旨在简化应用程序与各大社交平台的集成工作,包括但不限于新浪微博、QQ空间、QQ好友以及微信等。在Android 3.0版本中,该组件提供了更为优化的...
首先,友盟是中国领先的移动互联网开放平台,提供包括统计分析、社会化分享、推送、评论等多种服务。对于第三方登录,友盟提供了统一的SDK和API接口,简化了开发者的工作流程。 1. **注册与接入** 在使用友盟的第...
在Android应用开发中,友盟社会化分享是一种常见的功能,它允许用户通过各种社交平台(如QQ、QQ空间、腾讯微博、新浪微博、微信和朋友圈)轻松地分享内容。本测试项目"友盟社会化分享测试"专注于集成和调试这个过程...
友盟分享(微信,朋友圈)Demo是一个用于演示如何在应用中集成友盟分享功能,以便让用户能够方便地将内容分享到微信和微信朋友圈的实例。这个Demo提供了完整的代码示例,帮助开发者理解并实现这一功能。 友盟是中国...