1. 程式人生 > >APP和小程式互相跳轉

APP和小程式互相跳轉

隨大流吧。微信小程式出了這麼久,現在才學習下。

app和小程式互相跳轉:

1、App主動發起小程式卡片分享到微信,微信點選開啟小程式,這時的小程式可以開啟App

2、App主動發起開啟小程式,這時的小程式可以開啟App

目前主要就這兩種方式吧,說是互相跳轉好像不太妥當,畢竟App才是主動一方,小程式只能被動返回,類似於分享,App如果不發起分享到微信,微信是不能返回你的App的。說到這裡大家應該都有一個印象了吧。

至於上面兩種方式的實現方法也簡單,只要把微信官網的程式碼複製過來就能用了。

App主動分享小程式卡片(微信官網):小程式測試版不能分享

WXMiniProgramObject miniProgramObj = new WXMiniProgramObject();
miniProgramObj.webpageUrl = "http://www.qq.com"; // 相容低版本的網頁連結
miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;// 正式版:0,測試版:1,體驗版:2
miniProgramObj.userName = "gh_d43f693ca31f";     // 小程式原始id
miniProgramObj.path = "/pages/media";            //小程式頁面路徑
WXMediaMessage msg = new WXMediaMessage(miniProgramObj);
msg.title = "小程式訊息Title";                    // 小程式訊息title
msg.description = "小程式訊息Desc";               // 小程式訊息desc
msg.thumbData = getThumb();                      // 小程式訊息封面圖片,小於128k

SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;  // 目前支援會話
api.sendReq(req);

App主動開啟小程式(微信官網):

String appId = "wxd930ea5d5a258f4f"; // 填應用AppId
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);

WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_d43f693ca31f"; // 填小程式原始id
req.path = path;                  //拉起小程式頁面的可帶參路徑,不填預設拉起小程式首頁
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可選開啟 開發版,體驗版和正式版
api.sendReq(req);
WXEntryActivity中

public void onResp(BaseResp resp) {
    if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
        WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
        String extraData =launchMiniProResp.extMsg; // 對應JsApi navigateBackApplication中的extraData欄位資料
    }
}

小程式返回App就更簡單了(微信官網):

<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">開啟APP</button>

另附:微信分享開啟App:使用魔窗SDK實現,實際是網頁開啟App,蘋果倒是可以直接開啟App,安卓只能用網頁開啟分享再開啟App。具體實現可以檢視官網文件。我是在unity遊戲專案上實現的,安卓需要新增一個透明Activity作為初始介面,不然沒有分配link的介面會實現不了吧,IOS是同事配置的。

demo