1. 程式人生 > >關於友盟分享的總結

關於友盟分享的總結

最近在做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"];解決了這個問題,具體的還不知道為什麼,如果有人知道可以跟我說下微笑,歡迎指出賜教。

問題二:新浪微博不可以帶連結分享,具體程式碼已貼上在上面。

總結一句話:官方文件還是得仔細研究,按照官方文件來,是沒錯的大笑