關於友盟分享的總結
阿新 • • 發佈:2018-12-31
最近在做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 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://~~~~~~~";
}
}