博客 / 詳情

返回

MobTech ShareSDK Android端微信分享小程序

前言:首先要集成ShareSDK,集成步驟請查看這裏;

1.微信開發者後台的相關信息配置

集成完之後做小程序的分享,首先要申請完小程序到微信開放平台綁定到自己的應用,否則無法成功分享, 綁定的位置如下圖:

綁定完之後點擊查看如下圖所示可以看到原始ID,這個後面分享會用到;

分享小程序的頁面路徑可以直接複製

2.分享微信小程序

ShareSDK分享小程序只是ShareSDK分享微信的一種類型,只要設置對類型和方法即可;

微信分享登錄等,必須要保證微信開放平台-->管理中心-->移動應用-->你的應用(查看進入)-->開發信息,中配置的項目的包名和應用簽名,與您的app的包名和簽名一致,否則無法分享;

2.1OneKeyShare接口分享小程序説明
OneKeyShare的分享需要先確定分享類型,代碼如下:

OnekeyShare oks = new OnekeyShare();
  oks.setTitle("標題測試");
  oks.setText("lalalla http://open.qq.com");
  oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
  oks.setUrl("http://open.qq.com");
  oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {
      @Override
      public void onShare(Platform platform,
      cn.sharesdk.framework.Platform.ShareParams paramsToShare) {
          if(platform.getName().equals("Wechat")){
              paramsToShare.setShareType(Platform.SHARE_WXMINIPROGRAM);//分享小程序類型
              paramsToShare.setWxUserName("gh_52568203455c");//配置小程序原始ID,前面有截圖説明
              paramsToShare.setWxPath("pages/index/index");//分享小程序頁面的具體路徑,前面截圖從微信小程序開發工具中可以直接複製    }
      });    
  oks.setCallback(new PlatformActionListener() {
        @Override
        public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
                 Log.d("ShareSDK", "onComplete ---->  分享成功");
        }
        @Override
        public void onError(Platform platform, int i, Throwable throwable) {
                 Log.d("", "onError ---->  失敗" + throwable.getStackTrace());
        }
        @Override
        public void onCancel(Platform platform, int i) {
                 Log.d("ShareSDK", "onCancel ---->  分享取消");
        }
      });
   oks.show(MobSDK.getContext());
  • 小程序需要在setShareContentCustomizeCallback方法中,判斷固定小程序的分享類型"SHARE_WXMINIPROGRAM", 判斷完類型我們來説下小程序的字段説明,setWxUserName,小程序的原始ID;setWxPath,這個方法中是傳小程序分享後點擊打開的小程序中的頁面您的路徑,這個可以到小程序開發工具中查看;
  • 其次是oks調用的setText、setImageUrl(圖片可以用setImagePath分享本地圖片等)、setUrl、setTitle、這四個方法也是必須要的,小程序分享,如果微信客户端不支持的話會默認分型鏈接的類型,所以這幾個方法也是必須配置的;
  • 微信的AppId和AppSecret的配置這裏就不多贅述,可以去官方的集成文檔瞭解配置的位置;

2.2單獨分享接口分享微信小程序

Platform sina2 = ShareSDK.getPlatform(Wechat.NAME);
                        ShareParams SP2 = new ShareParams();
                        SP2.setWxUserName("gh_52568203455c");  //小程序原始ID
                        SP2.setWxPath("pages/index/index");//分享小程序頁面路徑
                        SP2.setTitle("標題分享");
                        SP2.setText("http://www.mob.com");
                        SP2.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
                        SP2.setUrl("http://www.baidu.com");
 Wechat.ShareParams spa = new Wechat.ShareParams();
                    spa.setTitle("標題分享");
                    spa.setText("分享參數");
                    spa.setUrl("http://www.baidu.com");
                    spa.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");      
                    spa.setWxMiniProgramType(0);//分享小程序類型:0-正式,1-開發,2-體驗
                    spa.setWxPath("pages/index/index");//分享小程序頁面路徑
                    spa.setWxUserName("gh_52568203455c");//小程序原始ID
                    spa.setShareType(Platform.SHARE_WXMINIPROGRAM);//分享小程序類型
                   // 設置分享事件回調(注:回調放在不能保證在主線程調用,不可以在裏面直接處理UI操作)
                    weChat.setPlatformActionListener(new PlatformActionListener() {
                        @Override
                        public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
                            platform.getName();
                            Log.d("ShareSDK", "onComplete ---->  分享成功");
                        }
                        @Override
                        public void onError(Platform platform, int i, Throwable throwable) {
                            Log.d("ShareSDK", "onError ---->  分享失敗" + throwable.getStackTrace().toString());
                        }
                        @Override
                        public void onCancel(Platform platform, int i) {
                            Log.d("ShareSDK", "onCancel ---->  分享取消");
                        }
                    });// 執行圖文分享
                    weChat.share(spa);

單獨分享小程序代碼如上,與原始分享沒有差別只是多了兩個參數,設置下分享類型即可,具體小程序原始ID,如何綁定可以看第一中的説明;

2.3打開微信小程序
先閲讀2.1 、2.2步驟分享微信小程序,然後在第一步的基礎上修改一個類型,setShareType,如下所示:

setShareType(Platform.OPEN_WXMINIPROGRAM);//打開小程序

其他與第一步保持不變即可,點擊按鈕,就可以直接打開小程序了;

3.微信小程序打開APP,並獲取參數

3.1參數設置
首先需要仔細閲讀下小程序的文檔查看這裏,在小程序中設置對應的按鈕和參數,如下圖所示:

3.2客户端回調接口設置
在微信回調類中增加判斷參數和打開app的操作:

public class WXEntryActivity extends WechatHandlerActivity {
    /**
     * 處理微信發出的向第三方應用請求app message
     * <p>
     * 在微信客户端中的聊天頁面有“添加工具”,可以將本應用的圖標添加到其中
     * 此後點擊圖標,下面的代碼會被執行。Demo僅僅只是打開自己而已,但你可
     * 做點其他的事情,包括根本不打開任何頁面
     */
//通過直接打開的微信小程序返回
    public void onGetMessageFromWXReq(WXMediaMessage msg) {
        if (msg != null && msg.wxminiprogram_ext_msg != null) {
            Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());
            startActivity(iLaunchMyself);
            Log.e("ShareSDK", " WXEntryActivity onGetMessageFromWXReq ===> " + msg.wxminiprogram_ext_msg);
            WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
            Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();
        }
    }
    /**
     * 處理微信向第三方應用發起的消息
     * <p>
     * 此處用來接收從微信發送過來的消息,比方説本demo在wechatpage裏面分享
     * 應用時可以不分享應用文件,而分享一段應用的自定義信息。接受方的微信
     * 客户端會通過這個方法,將這個信息發送回接收方手機上的本demo中,當作
     * 回調。
     * <p>
     * 本Demo只是將信息展示出來,但你可做點其他的事情,而不僅僅只是Toast
     */
    //通過網頁模式微信小程序返回
    public void onShowMessageFromWXReq(WXMediaMessage msg) {
        if (msg != null && msg.mediaObject != null
                && (msg.mediaObject instanceof WXAppExtendObject)) {
            WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
            Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();
        }
    }

}

<!-- 微信分享回調 -->
        <activity
            android:name="項目包名.wxapi.WXEntryActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true" />

如上所示,配置完回傳的參數,WXEntryActivity.java,在這個類中打開app即可。這樣在小程序中打開app就可以跳轉到app中了,並且可以獲取到回傳的參數。

user avatar maenj_ba_lah 頭像 light_5cfbb652e97ce 頭像 nihaojob 頭像
3 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.