Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android集成友盟社會化分享功能

Android集成友盟社會化分享功能

編輯:關於Android編程

1. 產品概述

友盟社會化組件,可以讓移動應用快速具備社會化分享、登錄、評論、喜歡等功能,並提供實時、全面的社會化數據統計分析服務。

指南將會手把手教你使用社會化組件SDK,用5分鐘為APP增加新浪微博、騰訊微博、人人網分享功能。

注意:本文示例代碼均針對最新版SDK,如果你所用SDK的類名或方法名與此文不符合,請使用你所用SDK的隨包文檔、或者下載使用最新版SDK。

2. 獲取友盟Appkey

如果你之前已經在友盟注冊了應用,並獲取到了Appkey,可以繼續使用它.

如果你尚未在友盟注冊開發者賬號,需要先注冊,注冊之後登錄你的賬號,點擊**添加新應用**,填寫完應用基本信息後,將進入"下載SDK並添加代碼"頁面,此頁面即可得到Appkey

3. 下載並安裝SDK

  1. 下載SDK最新版

  2. 添加代碼和資源引用

    jar文件對應列表

    平台 jar文件 騰訊微博 SocialSDK_TencentWB_1.jar,SocialSDK_TencentWB_2.jar QQ空間\QQ好友 SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar 微信好友 SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar

    注意

    1:QQ和QQ Zone SSO(免登錄)引用的jar文件相同。當需要同時支持QQ和QQ Zone的時候,只需添加一次SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件即可.
    2:由於我們對微信的包名做了修改(libammsdk.jar -> SocialSDK_WeiXin.jar),如出現"Unable to execute dex: Multiple dex files define "問題,請刪除libammsdk.jar或者SocialSDK_WeiXin.jar中的一個即可解決問題。

    3.1 添加資源文件和jar文件有三種方式,請根據您的需求進行選擇

    3.2 方法A:快速集成工具 ( 推薦 )

    1:解壓SDK下載包,雙擊運行SDK根目錄下的SDKIntegration.jar或者在命令行下輸入java -jar SDKIntegration.jar運行集成工具;
    2:選擇Android工程的根目錄,並且填寫您的友盟App Key;
    3:勾選所需平台和組件,點擊"快速集成";
    4:檢查AndroidManifest.xml、jar文件是否正確。如果集成了QQ或者QZone,請修改相應地appid。如下圖所示:

    \

    3.3 方法B:添加工程引用(升級方便,推薦)

    解壓SDK壓縮包,將文件夾中的social_sdk_library_project文件夾導入Eclipse,並在您的工程中添加對此項目的引用即可。

    3.3.1 方法C:添加資源到現有項目中

    解壓SDK壓縮包,將文件夾中的'main/libs'和'main/res'文件夾復制到你的項目工程根目錄下(如使用'ADT 17'以下用戶需要手動添加'libs'下的jar文件到工程Path中):

    \ SDK壓縮包目錄

    3.4 ** Manifest配置,添加友盟Appkey/Activity/權限**

    
    
    
        
    
            
            
            
            
    
            
            
                
                    
    
                    
                    
                    
                     
                
            
            
            
    
    
    
        
            
            
    
        
    
        
    
        
        
          
        
             
        
              
        
        
        
        
        
    
    
    
    

    如果選用多種UmengSDK產品使用不同Appkey,可為SocialSDK配置單獨的appkey,如下:

    /*代碼添加Appkey,如果設置了非null值,SocialSDK將使用該值.*/
    SocializeConstants.APPKEY = "xxxxxxxxx";
    
    

    4. 打開平台選擇面板

    4.1 首先在您的Activity中添加如下成員變量並設置分享內容

    // 首先在您的Activity中添加如下成員變量
    final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share");
    // 設置分享內容
    mController.setShareContent("友盟社會化組件(SDK)讓移動應用快速整合社交分享功能,http://www.umeng.com/social");
    // 設置分享圖片, 參數2為圖片的url地址
    mController.setShareMedia(new UMImage(getActivity(), 
                                          "http://www.umeng.com/images/pic/banner_module_social.png"));
    // 設置分享圖片,參數2為本地圖片的資源引用
    //mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));
    // 設置分享圖片,參數2為本地圖片的路徑(絕對路徑)
    //mController.setShareMedia(new UMImage(getActivity(), 
    //                                BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));
    
    // 設置分享音樂
    //UMusic uMusic = new UMusic("http://sns.whalecloud.com/test_music.mp3");
    //uMusic.setAuthor("GuGu");
    //uMusic.setTitle("天籁之音");
    // 設置音樂縮略圖
    //uMusic.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");
    //mController.setShareMedia(uMusic);
    
    // 設置分享視頻
    //UMVideo umVideo = new UMVideo(
    //          "http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");
    // 設置視頻縮略圖
    //umVideo.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");
    //umVideo.setTitle("友盟社會化分享!");
    //mController.setShareMedia(umVideo);

    4.2 人人網分享時,如果不設置website,點擊¨應用名稱¨或者¨圖片¨將跳轉到人人網主頁;如果設置website將跳轉到此website的頁面。

    設置website的方式如下:

    mController.setAppWebSite(SHARE_MEDIA.RENREN, "http://www.umeng.com/social");
    
    

    4.2.1 通過某個按鈕或其他方法彈出分享面板

    mController.getConfig().removePlatform( SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN);
    yourShareButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // 是否只有已登錄用戶才能打開分享選擇頁
            mController.openShare(getActivity(), false);
        }
    });
    
    
    

    5. 驗證效果

    編譯並運行後,點擊添加分享功能的View出現如下頁面,那麼說明你已經集成成功基本的分享功能和平台了!但是,為了使您的用戶有更好的分享體驗,以及您的應用有更多的分享量,更好地在社交平台上傳播,我們建議您按照下面的指引進行SSO(免登錄)和新平台的設置。

    \ \ 選擇分享平台面板 分享編輯頁

    6. 各平台SSO(免登錄)配置

    SSO名詞解釋 : SSO英文全稱Single Sign On,單點登錄。SSO是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
    例如用戶已經登錄新浪微博客戶端,使用SSO授權登錄時則不需要用戶手動輸入用戶名、密碼,直接點擊登錄即可, 因此可成為免登錄.

    6.1 配置SSO授權回調

    如果有使用任一平台的SSO授權或者集成了facebook平台, 則必須在對應的activity中實現onActivityResult方法, 並添加如下代碼

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        /**使用SSO授權必須添加如下代碼 */
        UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode) ;
        if(ssoHandler != null){
           ssoHandler.authorizeCallBack(requestCode, resultCode, data);
        }
    }
    
    

    6.2 分享到微信和朋友圈

    添加微信和朋友圈所依賴的jar文件
    1.解壓已下載的zip文件,將platforms/weixin/libs目錄中SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中。
    2.在libs目錄中找到SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar文件,鼠標右鍵-->Add to Build Path。
    3 將解壓目錄中platforms/weixin/res拷貝至你工程的res目錄。

    6.3 添加如下集成代碼

    
    String appID = "wx967daebe835fbeac";
    String appSecret = "5fa9e68ca3970e87a1f83e563c8dcbce";
    // 添加微信平台
    UMWXHandler wxHandler = new UMWXHandler(getActivity(),appId,appSecret);
    wxHandler.addToSocialSDK();
    // 添加微信朋友圈
    UMWXHandler wxCircleHandler = new UMWXHandler(getActivity(),appId,appSecret);
    wxCircleHandler.setToCircle(true);
    wxCircleHandler.addToSocialSDK();
    
    

    微信和朋友圈支持純文字,純圖片(點擊查看大圖),圖文,音樂,視頻分享。
    注意
    此版本兼容了微信支付的功能,請更新SocialSDK_WeiXin_1.jar文件。

    6.4 微信和微信朋友圈的回調

    如果在您的項目中集成了微信或者微信朋友圈,並且您需要准確的分享回調,則需要在AndroidManifest.xml中下注冊下面的回調Activity。

    
    
    

    然後將SDK包中platforms/weixin目錄下的wxapi文件夾拷貝到您的工程的包目錄下, 然後修改WXEntryActivity的完整路徑即可。
    例如social_sdk_example的包名為com.umeng.soexample,因此將wxapi文件夾拷貝到com.umeng.soexample下,最終WXEntryActivity的 完整路徑為com.umeng.soexample.wxapi.WXEntryActivity。
    其中分享的回調接口SnsPostListener的onComplete方法的第二個參數代表分享的狀態碼,當值為200時表示分享成功;其余的值則為分享失敗。

    微信集成相關說明

    微信集成注意以下幾點

    • 正確填寫AppID。
    • 工程的包名必須同申請應用的包名一致。
    • 在微信開放平台填寫你App的的簽名,測試、發布時要保證App的簽名跟微信開放平台的簽名一致。
    • 開發者的應用需要通過審核。開發者在申請應用必須要通過微信官網的審核才能進行調試。

    Demo中集成的微信無法使用?

    原因:Demo中使用的微信AppID綁定的簽名信息和你打包時所用的簽名信息不一致,導致無法響應. 解決辦法有兩個,您任選其一:

    • 申請一個測試Demo中AppID.(申請地址).
      填寫"包名"時請使用Demo的包名"com.umeng.soexample".
      填寫"簽名"使用簽名生成工具(簽名工具)生成,簽名時填寫Demo的包名.
      獲取微信AppID後替換Demo中的使用的AppID.

    • 使用SDK中的 debug.keystore編譯運行Demo工程.

    6.5 分享給QQ好友

    添加QQ分享所依賴的jar文件

    1. 解壓已下載的zip文件,將platforms/qq_zone/libs目錄中SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中。

    2. 在libs目錄中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,鼠標右鍵-->Add to Build Path。

    3. 將解壓目錄中platforms/qq_zone/res文件拷貝至你工程res目錄。

    4. 在AndroidManifest.xml中注冊AuthActivity,QQ空間和QQ共用該授權Activity,具體配置參考上文的AndroidManifest.xml文件。

      6.6 添加如下集成代碼

      //參數1為當前Activity,參數2為開發者在QQ互聯申請的APP ID,參數3為開發者在QQ互聯申請的APP kEY.
      UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(getActivity(), "100424468",
                      "c7394704798a158208a74ab60104f0ba");
      qqSsoHandler.addToSocialSDK();  
      
      

      注意:

      1.此版本集成了QQ的最新jar文件,請更新SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件.

      2.QQ分享內容為音樂,視頻的時候,其形式必須為url;圖片支持url和本地圖片類型.

      3.QQ SSO授權不會在onActivityResult方法內被調用。

      4.未安裝手機QQ客戶端的情況下,QQ不支持純圖片分享.

      5.未安裝手機QQ客戶端的情況下,QQ取消授權不執行相關回調。

      6.QQ和QQ空間授權,對於同一個應用同一個賬號返回的uid,openid相同。

      6.7 SSO(免登錄)分享到QQ空間

      6.7.1 添加QQ空間所依賴的jar文件跟資源文件

      如果已經添加了SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,則不需要再次添加。

      1.解壓已下載的zip文件,將platforms/qq_qzone/libs中 SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3. jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中。

      2.在libs目錄中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,鼠標右鍵-->Add to Build Path。

      3.將解壓目錄中platforms/qq_zone/res文件拷貝至你工程res目錄。

      4.在AndroidManifest.xml中注冊AuthActivity,QQ空間和QQ共用該授權Activity,具體配置參考上文的AndroidManifest.xml文件。

      6.7.2 在集成代碼中添加如下代碼

      //參數1為當前Activity,參數2為開發者在QQ互聯申請的APP ID,參數3為開發者在QQ互聯申請的APP kEY.
      QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(getActivity(), "100424468",
                      "c7394704798a158208a74ab60104f0ba");
      qZoneSsoHandler.addToSocialSDK();
      
      

      注意:

      1.本次集成了QZone的最新jar包,升級時請注意更新SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件。
      2.在進行QZone SSO授權時,請在AndroidManifest.xml中配置相應的Activity。具體參加上文AndroidManifest.xml文件配置。
      3.QZone不支持純圖片分享。
      4.無手機QQ客戶端的情況下,QQ取消授權不執行相關回調。
      5.QQ和QQ空間授權,對於同一個應用同一個賬號返回的uid,openid相同。

      6.8 SSO(免登錄)分享到新浪微博

      注意一定保證在新浪微博上填寫應用簽名,參考文檔

      6.8.1 1.添加SSO必須的文件

      將platforms/sina/libs中的SocialSDK_Sina.jar添加到工程libs中並將該jar加入到build path中, 由於4.2版本將remoteSSO文件打入SocialSDK_Sina.jar中,因此老版本升級過程中需要刪除舊版本中的remoteSSO文件,否則會出現文件沖突

      6.8.2 在代碼中添加如下代碼

      //設置新浪SSO handler
      mController.getConfig().setSsoHandler(new SinaSsoHandler());
      
      

      6.9 SSO(免登錄)分享到騰訊微博

      添加騰訊微博SSO所依賴的jar文件
      1.解壓已下載的zip文件,將platforms/tencentweibo/libs中SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar,,SocialSDK_tencentWB_3.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中.
      2.在libs目錄中找到SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar,,SocialSDK_tencentWB_3.jar文件,鼠標右鍵-->Add to Build Path.

      在集成代碼中添加如下代碼

      //設置騰訊微博SSO handler
      mController.getConfig().setSsoHandler(new TencentWBSsoHandler());
      
      

      注意:

      1.手機中必須安裝微博客戶端V3.8.1及以上的版本才支持SSO功能.
      2.騰訊微博的SSO沒有回調。由於騰訊微博SSO沒有提供回調,因此騰訊微博SSO不會在onActivityResult方法內被調用(騰訊微博授權流程不經過onActivityResult方法).

      6.10 SSO(免登錄)分享到人人

      添加人人SSO所依賴的jar文件 1.解壓已下載的zip文件,將platforms/renren/libs/SocialSDK_renren_1.jar,SocialSDK_renren_2.jar,拷貝到你工程libs目錄中。
      2.在libs工程找到SocialSDK_renren_1.jar,SocialSDK_renren_2.jar文件,鼠標右鍵-->Add to Build Path。

      在集成代碼中添加如下代碼

      //添加人人網SSO授權功能
      //APPID:201874
      //API Key:28401c0964f04a72a14c812d6132fcef
      //Secret:3bf66e42db1e4fa9829b955cc300b737
      RenrenSsoHandler renrenSsoHandler = new RenrenSsoHandler(getActivity(),
                  "201874", "28401c0964f04a72a14c812d6132fcef",
                  "3bf66e42db1e4fa9829b955cc300b737");
      mController.getConfig().setSsoHandler(renrenSsoHandler);
      
      

      在SDK中的OAuth授權部分包含了Activity,為了程序能正常允許,請將以下Activity信息在您的應該工程Androidmanefest.xml中注冊:

      
      
      
      然後添加如下權限 :     
      
      
          
          
          
          
          
          
      
      

      注意

      1.手機中必須安裝人人客戶端V5.9.3及以上的版本才支持SSO功能。
      2.由於人人SSO沒有提供回調,因此人人SSO不會在onActivityResult方法內被調用(人人SSO授權流程不經過onActivityResult方法)。

      7. 微信簽名說明

      由於微信的簽名過程跟驗證流程較多,出錯的可能性較大,這裡將對微信的簽名過程跟驗證做詳細的說明。

      7.1 獲取簽名文件

      獲取應用簽名方式有兩種 方式一:
      1:用eclipse導出 帶簽名 的apk文件,注意此時選擇的簽名文件是你發布app時的簽名文件。在導出的最後一步,eclipse會顯示一個Certificate fingerprints(證書指紋),如下圖。此時找到MD5值,將該MD5值復制出來,按照“ 去掉冒號(:),大寫轉小寫 ”的規則裝換,此時字符串就是簽名。

      \ 通過eclispe獲取簽名

      方式二:
      導出 帶簽名 的apk文件,將該apk文件安裝至手機中。安裝微信的簽名工具,打開GenSignature應用程序,填寫你App的包名,點擊“Get Signature”即可得到簽名。

      \ 通過微信簽名工具獲取簽名

      7.2 請在微信開放平台申請應用

      1:填寫App的相關信息,注意確保包名跟簽名填寫正確,填寫完成提交微信審核。

      7.3 微信集成測試

      1:在進行微信集成測試時,請填寫你申請App的AppID。測試時需要導出帶簽名的apk文件測試,否則將不能正常分享。

      8. 應用信息注冊地址列表

      下面是Social SDK不同平台應用信息注冊網站的地址:

      平台 網址 新浪微博 http://open.weibo.com 騰訊微博 http://dev.t.qq.com QQ空間 http://open.qq.com/ 微信好友 http://open.weixin.qq.com FaceBook https://developers.facebook.com 人人 http://dev.renren.com 豆瓣 http://developers.douban.com/

      9. 混淆

      為了保證引用友盟Social SDK jar文件以及騰訊jar文件被混淆,請在proguard.cfg文件中添加以下代碼避免被混淆.

      
      -dontshrink
      -dontoptimize
      -dontwarn com.google.android.maps.**
      -dontwarn android.webkit.WebView
      -dontwarn com.umeng.**
      -dontwarn com.tencent.weibo.sdk.**
      -dontwarn com.facebook.**
      
      -libraryjars libs/SocialSDK_QQZone_2.jar
      
      -keep enum com.facebook.**
      -keepattributes Exceptions,InnerClasses,Signature
      -keepattributes *Annotation*
      -keepattributes SourceFile,LineNumberTable
      
      -keep public interface com.facebook.**
      -keep public interface com.tencent.**
      -keep public interface com.umeng.socialize.**
      -keep public interface com.umeng.socialize.sensor.**
      -keep public interface com.umeng.scrshot.**
      
      -keep public class com.umeng.socialize.* {*;}
      -keep public class javax.**
      -keep public class android.webkit.**
      
      -keep class com.facebook.**
      -keep class com.umeng.scrshot.**
      -keep public class com.tencent.** {*;}
      -keep class com.umeng.socialize.sensor.**
      
      -keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
      
      -keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
      
      -keep class im.yixin.sdk.api.YXMessage {*;}
      -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
      
      -keep public class [your_pkg].R$*{
          public static final int *;
      }
      
      

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved