您的位置:首页 > 其它

关于友盟分享的总结

2016-03-29 15:13 204 查看

最近在做iOS的友盟分享,需要分享到QQ,QQ空间,微信,微信朋友圈以及新浪微博。总结一点是一定要仔细的按照官方文档来配置,虽然官方文档很详细,但是我还是要写出自己遇到的问题以及如何解决的方法,以此来帮助遇到同样问题的人。

1,iOS9由于HTTP传输安全,需要做特殊配置。我是在info.plist文件中添加 在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES。

2,如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。我当时就忽略了这个问题,导致一直是WebView授权,但是不符合项目需求,在info.plist中加入白名单(右键info.plist用source
code打开),具体的参考这个链接就可以了点击打开链接

3,下载最新的SDK,成功下载SDK后,要去配置下。添加URL scheme,在你的工程设置项,targets
一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:
平台 url scheme设置格式
新浪微博“wb”+新浪appkey,例如“wb126663232”
微信微信应用appId,例如“wxd9a39c7122aa6516”,微信详细集成步骤参考微信集成方法
人人网“rm”+你的应用bundle id,例如“rmcom.umeng.SocialSDK”
QQ、QQ空间需要添加两个URL schemes 1. “QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”,注意大写,生成十六进制方法:点击链接,2.“tencent“+腾讯QQ互联应用Id,例如“tencent100424468"
,QQ及Qzone详细集成步骤参考手机QQ集成方法
来往Identifier填“Laiwang”,URL Schemes填来往AppId.注意使用来往SDK后,Xcode工程other linker flags需要添加-ObjC参数
易信易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06”
Facebook集成最新Facebook SDK在iOS7.0以上有效,若要使用我们提供的facebook分享需要设置“fb”+facebook AppID,例如“fb1440390216179601”,详细集成方法见集成facebook





关键代码:
<textarea readonly="readonly" name="code" class="c++">
//友盟分享
[UMSocialData setAppKey:UMENG_APPKEY];

//设置微信AppId、appSecret,分享url
[UMSocialWechatHandler setWXAppId:WXAppId appSecret:WXAppSecret url:MOVIEBANNERURL];
[UMSocialData defaultData].extConfig.wechatSessionData.url = MOVIEBANNERURL;
[UMSocialData defaultData].extConfig.wechatTimelineData.url = MOVIEBANNERURL;
[UMSocialData defaultData].extConfig.wechatSessionData.title = @"电影";
[UMSocialData defaultData].extConfig.wechatTimelineData.title = @"电影";
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://star.xiziwang.net/uploads/allimg/140930/19_140930101146_1.jpg"];

//设置分享到QQ/Qzone的应用Id,和分享url 链接
[UMSocialQQHandler setQQWithAppId:QQAppId appKey:QQAppSecret url:MOVIEBANNERURL];
[UMSocialData defaultData].extConfig.qqData.url = MOVIEBANNERURL;
[UMSocialData defaultData].extConfig.qzoneData.url = MOVIEBANNERURL;
[UMSocialData defaultData].extConfig.qqData.title = @"电影";
[UMSocialData defaultData].extConfig.qzoneData.title = @"电影";

//设置分享到新浪微博
[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:SinaAppId
secret:SinaAppSecret
RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
</textarea>


<textarea readonly="readonly" name="code" class="c++">

#pragma mark   微信/QQ/新浪微博回调
- (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];
}
</textarea>


<textarea readonly="readonly" name="code" class="c++">
- (void)shareActrion
{
if (!hasNetNow) {
[BBAlertWindow showAlertWith:@"您的网络不可用,请检查网络连接"];
return;
}
NSLog(@"分享");
[UMSocialSnsService presentSnsIconSheetView:self
appKey:UMENG_APPKEY
shareText:SHARETEXT
shareImage:[UIImage imageNamed:@"shareImage"]
shareToSnsNames:@[UMShareToQQ, UMShareToQzone,UMShareToWechatSession, UMShareToWechatTimeline,UMShareToSina]
delegate:self];
}

-(void)didSelectSocialPlatform:(NSString *)platformName withSocialData:(UMSocialData *)socialData
{
//由于新浪微博不像扣扣,微信可以直接设置分享链接,需要在这里把你想要分享的链接打印出来,下面代码就可以分享带链接的了
if(platformName == UMShareToSina)
{
socialData.shareText = @"音乐 音乐播放地址:http://~~~~~~~";
}

}


项目中我遇到的问题之一是:分享到扣扣和扣扣空间,都是跳转分享到扣扣好友界面,怎样区分呢?控制台一直打印出:分享图片和文字到扣扣空间这类信息,后来,我加了这个方法,使用默认分享界面分享URL图片,[[UMSocialData
defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:@"http://www.baidu.com/img/bdlogo.gif"];解决了这个问题,具体的还不知道为什么,如果有人知道可以跟我说下

,欢迎指出赐教。

问题二:新浪微博不可以带链接分享,具体代码已粘贴在上面。

总结一句话:官方文档还是得仔细研究,按照官方文档来,是没错的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: