需求:APP端 將公司的微信小程序 分享至微信好友
最近,微信小程序比較火熱,公司也在做這一塊,目前公司的小程序都是由H5端開(kāi)發(fā)的,我們Android端也接到一個(gè)任務(wù),那就是Android端應(yīng)支持微信小程序的分享,并且通過(guò)分享出去的小程序可以啟動(dòng)我們的APP;
今天我們先來(lái)完成:Android端應(yīng)支持微信小程序的分享?。。?/p>
分析:
微信開(kāi)放平臺(tái)SDK支持小程序類(lèi)型分享,詳見(jiàn)官方文檔:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN
a) 要求發(fā)起分享的App與小程序?qū)儆谕晃⑿砰_(kāi)放平臺(tái)帳號(hào);
b) 支持分享小程序類(lèi)型消息至好友會(huì)話,不支持“分享至朋友圈” “收藏”;
c) 微信客戶(hù)端版本要求:6.5.6及以上微信客戶(hù)端版本,若客戶(hù)端版本低于6.5.6,小程序類(lèi)型分享將自動(dòng)轉(zhuǎn)成網(wǎng)頁(yè)類(lèi)型分享。開(kāi)發(fā)者必須填寫(xiě)網(wǎng)頁(yè)鏈接字段,確保低版本客戶(hù)端能正常打開(kāi)網(wǎng)頁(yè)鏈接;
d) 支持分享大圖卡片樣式,自定義圖片建議長(zhǎng)寬比是 5:4。6.5.9及以上版本微信客戶(hù)端小程序類(lèi)型分享使用大圖卡片樣式。
e)支持分享開(kāi)發(fā)版/體驗(yàn)版小程序,為支持開(kāi)發(fā)者調(diào)試,開(kāi)發(fā)者工具包支持分享開(kāi)發(fā)版/體驗(yàn)版小程序至微信,開(kāi)發(fā)者可控制分享的小程序版本。
把文檔看了一遍,發(fā)現(xiàn)限制是比較多的,但是功能實(shí)現(xiàn)還是很簡(jiǎn)單的,下面讓我們開(kāi)始吧?。?!
開(kāi)發(fā):
-
前期準(zhǔn)備
1.png -
小程序與APP主體賬號(hào)綁定
開(kāi)發(fā)人員希望通過(guò)APP分享小程序,需要先將小程序與APP主體賬號(hào)(即APP的微信開(kāi)放平臺(tái)賬號(hào))綁定,APP才具有分享對(duì)應(yīng)小程序的能力。如果沒(méi)有與主體賬號(hào)綁定,分享時(shí)是報(bào)錯(cuò)的,如下圖:
2.png
2.1. 登錄APP所在的微信開(kāi)放平臺(tái):https://open.weixin.qq.com/
2.2. 綁定小程序

由上圖可以看到,綁定小程序的數(shù)量是有限制的。我們點(diǎn)擊【綁定小程序】按鈕,打開(kāi)的新頁(yè)面

輸入小程序開(kāi)發(fā)的主賬號(hào)和密碼,輸入驗(yàn)證碼提交就可以了,然后再通過(guò)手機(jī)微信掃碼驗(yàn)證一下。
綁定成功后,直接就能在綁定列表中看到已綁定的小程序?。。?p>
- 代碼實(shí)現(xiàn)
3.1 小程序端提供參數(shù):
miniProgram.userName="xxx"; //小程序ID
miniProgram.path="pages/xxx/xxx"; //小程序路徑
3.2 配置gradle
dependencies {
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}
3.3 分享小程序的核心代碼
findViewById(R.id.send_mini).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
WXMiniProgramObject miniProgram = new WXMiniProgramObject();
miniProgram.webpageUrl="http://www.qq.com";//自定義
miniProgram.userName="xxxxxxxxx";//小程序端提供參數(shù)
miniProgram.path="pages/entry";//小程序端提供參數(shù)
WXMediaMessage mediaMessage = new WXMediaMessage(miniProgram);
mediaMessage.title = "cgw miniProgram";//自定義
mediaMessage.description = "this is miniProgram's description";//自定義
Bitmap bitmap = BitmapFactory.decodeResource(SendToWXActivity.this.getResources(),R.drawable.fightk);
Bitmap sendBitmap = Bitmap.createScaledBitmap(bitmap,200,200,true);
bitmap.recycle();
mediaMessage.thumbData = Util.bmpToByteArray(sendBitmap,true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = "";
req.scene = SendMessageToWX.Req.WXSceneSession;
req.message = mediaMessage;
api.sendReq(req);
}
});
- Demo演示
為了避免麻煩,我們直接下載使用官方Demo,在其源代碼上直接修改,修改的內(nèi)容主要如下:
a. 包名(必須修改,使用你項(xiàng)目APP的實(shí)際包名)
b. 配置gradle(微信sdk包、簽名文件)
c. 增加分享小程序的按鈕和事件
4.1 下載微信開(kāi)放平臺(tái)官方Demo
https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/WeChatSDK_sample_Android.zip
4.2 修改包名
使用Androidstudio打開(kāi)demo,目錄結(jié)構(gòu)如下圖,修改其包名

4.2.1如上圖,取消compact empty middle packages的默認(rèn)選中
4.2.2在對(duì)應(yīng)包名的文件夾上,直接右鍵修改名稱(chēng),改成包名對(duì)應(yīng)的名稱(chēng),并全部應(yīng)用
可參考:http://m.itdecent.cn/p/557e1906db1a
修改后的包名,必須是你項(xiàng)目APP的實(shí)際包名,且已通過(guò)微信開(kāi)放平臺(tái)審核的APP包名;
4.3 配置gradle(修改依賴(lài)、修改簽名)

簽名必須使用你項(xiàng)目APP對(duì)應(yīng)的簽名文件,即你申請(qǐng)微信開(kāi)放平臺(tái)時(shí)APP對(duì)應(yīng)的簽名文件;
4.4 修改APP_ID
public class Constants {
// APP_ID 替換為你的應(yīng)用從官方網(wǎng)站申請(qǐng)到的合法appId
public static final String APP_ID = "wxf666676666636666";
public static class ShowMsgActivity {
public static final String STitle = "showmsg_title";
public static final String SMessage = "showmsg_message";
public static final String BAThumbData = "showmsg_thumb_data";
}
}
4.5 增加分享小程序的按鈕和事件


4.6 測(cè)試
選擇分享的人員

收到分享的小程序卡片

至此,Demo演示完畢,如有問(wèn)題,請(qǐng)留言詢(xún)問(wèn)?。?!

