1. 程式人生 > >使用友盟社會化分享安卓android版SDK分享純圖片到微信

使用友盟社會化分享安卓android版SDK分享純圖片到微信

本人使用的其實是友盟的Cocos2d-x安卓版。普通安卓版使用方式稍有不同,但是設定分享內容的介面是一樣的。友盟官方文件中提到過他們支援微信純圖片分享,就是分享一張純圖片,而非一條圖文連結,到微信朋友圈,點選之後變大圖的那種。但是他們並未說明如何設定,預設設定是分享一條圖文連結。尤其是Cocos2d-x版,設定隱藏的還挺深,著實花了一番功夫才搞明白。

本文預設讀者已經閱讀過友盟的官方幫助文件,已經掌握了預設的整合方法。

(一)Cocos2d-x安卓版

在某個分享按鈕的回撥函式中呼叫了開啟分享面板函式openShare()之後,可以呼叫setPlatformShareContent()對某個指定平臺的分享內容進行單獨設定。例如下面的程式碼就實現了對微信朋友圈的分享內容進行單獨設定:

分享按鈕的回撥函式體內部

        // 獲取一個CCUMSocialSDK例項
        CCUMSocialSDK *sdk = CCUMSocialSDK::create("你的友盟app key");
        
        //設定微信app id和app key
        sdk->setWeiXinAppInfo("你的微信app id","你的微信app key");
        sdk->setLogEnable(true);
        sdk->setTargetUrl("你的分享連結");
        
        // 設定友盟分享面板上顯示的平臺
        vector<int>* platforms = new vector<int>();
        platforms->push_back(WEIXIN);
        platforms->push_back(WEIXIN_CIRCLE);
        
        // 設定平臺, 在呼叫分享、授權相關的函式前必須設定SDK支援的平臺
        sdk->setPlatforms(platforms) ;
        
        // 開啟分享面板, 註冊分享回撥
        sdk->openShare("你的分享文字", "你的分享圖片路徑", share_selector(shareCallback1));
        
        //設定微信朋友圈分享內容
        sdk->setPlatformShareContent(WEIXIN_CIRCLE, "你的分享文字",
                                     "你的分享圖片路徑", "你的分享標題", "你的分享連結");
如果不做其他設定,這樣仍然是分享一條圖文連結。注意,“你的分享標題(”而非“你的分享文字”)才是顯示在圖文連結上的文字。setPlatformShareContent()會通過JNI呼叫CCUMSocialController裡面對應的JAVA函式setPlatformShareContent()。如果要實現純圖片分享只需把該函式裡面的shareContent.setShareContent(text)刪除即可。完整程式碼如下所示:

CCUMSocialController.java

    public static void setPlatformShareContent(int platformCode, String text, String imagePath,
                                                    String title, String targetUrl) {

        //
        SHARE_MEDIA platform = getPlatform(platformCode);
        //
        UMImage shareImage = parseShareImage(imagePath);
        //
        Object shareObject = ReflectUtils.newHandlerInstance(
                mShareContentClzPathMap.get(platform), null, null);

        Log.d(TAG, "平臺獨立的分享內容 : " + shareObject);
        //
        if (shareObject instanceof BaseShareContent) {



            BaseShareContent shareContent = (BaseShareContent) shareObject;
            // 設定文字內容
            //shareContent.setShareContent(text);
            // 設定圖片
            shareContent.setShareMedia(shareImage);
            //shareContent.setShareImage(shareImage);
            // 設定title
            shareContent.setTitle(title);
            // 設定target url
            shareContent.setTargetUrl(targetUrl);
            // 設定分平臺的分享內容
            mController.setShareMedia(shareContent);

        } else if (shareObject instanceof SimpleShareContent) {
            SimpleShareContent shareContent = (SimpleShareContent) shareObject;
            shareContent.setShareContent(text);
            shareContent.setShareImage(shareImage);
            mController.setShareMedia(shareContent);
        }

    }
其實搞明白之後就是這麼簡單。

(二)普通安卓版

普通安卓版本人並未使用過。不過我開啟友盟的官方文件看了一下,微信分享那部分裡面也有setShareContent()函式,即circleMedia.setShareContent("你的分享文字")。所以根據上面的經驗我猜測只需把該函式刪除即可分享純圖片。友盟論壇上的這個帖子也支援我的猜測。如果不對,請留言,謝謝!