App打開微信小程序并傳遞參數(shù)

在App中打開小程序的功能發(fā)布有一段時間了,網(wǎng)上關于這個的新聞很多,但是技術資料并不多,我們有項目需要嘗試這種方式,特意試了一下,發(fā)現(xiàn)還是有一些坑,分享給大家。

首先微信官方文檔在微信.開放平臺上,截圖如下:


image.png

一. 開發(fā)前先得做好幾個準備工作:

  1. 在微信開放平臺上有賬號而且有通過的移動應用。


    image.png
  2. 在微信公眾平臺有賬號而且有小程序,最好發(fā)布為體驗版本


    image.png
  3. 在微信開放平臺把對應的移動應用和小程序建立關聯(lián)。這個過程來回需要登陸和掃二維碼n次。

image.png

二. 在android和ios調試官方sample打開小程序

注意官方下載的sample配置的證書和bundle id必須和在微信開放平臺對應的移動應用使用的一致。


image.png

打開小程序的核心代碼不多,里面有幾個參數(shù)必須設置正確

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;// 可選打開 開發(fā)版,體驗版和正式版
api.sendReq(req);

上面幾個參數(shù)再詳細說一下:

  • appId指的是微信開放平臺對應移動應用的appId,而不是小程序的appId,這里注意
  • userName是微信公眾平臺里小程序的原始Id,是gh開頭的。


    image.png
  • req.path就是打開小程序的路徑,傳遞參數(shù)就是通過這個來傳遞,但是文檔上并沒有說,試出來的。
req.path="page/index?key1=xxx&key2=yyy";//類似http的url方法來傳遞參數(shù)

*req.miniprogramType選的是開發(fā)和體驗版本,正式版本的小程序沒有測試過。

ios和android類似,不再細說。

3. 在小程序端接受App傳遞過來的參數(shù)

上面的App打開的path是'path/index',所以需要把App的onLaunch事件定義在page/index.js上


image.png

這里的options.scene是1069,這個場景id表示從app打開。
options.query.key1和options.query.key2就是app打開小程序傳遞的參數(shù)。

4. 關閉小程序回到App并傳遞數(shù)據(jù)

//小程序端通過navigateBackApplication來關閉
f1: function (e) {
    wx.navigateBackApplication({
      "extraData":"傳遞到app的數(shù)據(jù)"
    })
}

其中navigateBackApplication是一個新的函數(shù),在微信小程序的API和IDE的自動提示里都沒有。
Android和iOS通過一個回調函數(shù)來接受這個參數(shù):

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字段數(shù)據(jù)
    }
}

這里有一個坑,應該是bug或許后期微信會解決。就是Android接受的參數(shù)必須是一個js對象,ios接受的參數(shù)是一個字符串。
也就是在小程序端現(xiàn)在必須這么寫:

//小程序端通過navigateBackApplication來關閉
f1: function (e) {
   if(在android下){//wx.getSystemInfo
    wx.navigateBackApplication({
      "extraData":{key:"傳遞到app的數(shù)據(jù)"}
    })
   else{
      wx.navigateBackApplication({
        "extraData":"傳遞到app的數(shù)據(jù)"
    })
  }
}

大概過程就是這樣,能在app里打開小程序而且還能傳遞參數(shù)這個功能還是非常有用的,小程序和app很多共通的功能可以只實現(xiàn)一套小程序就可以了。

AppWorker官方已經在do_TencentWX 組件集成了這個功能,可以跨平臺使用這個功能。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 轉載鏈接 注:本文轉載知乎上的回答 作者:初雪 鏈接:https://www.zhihu.com/question...
    pengshuangta閱讀 29,332評論 9 295
  • 2017年還有5天的時間,曾經的夢想和計劃你還記得多少?你又完成了多少?2017像再也尋不見的童年,像被風吹走的草...
    三月陽春_c953閱讀 267評論 0 2
  • 一管清簫年華逝,年輪千轉紅顏盡,前塵湮滅桑田處,朝后落暮流年絕。生命似花,人生如夢,芬芳轉瞬即逝,飄零的花瓣...
    君陌痕閱讀 451評論 0 4
  • 1、下筆輕柔有余,剛勁不足,說明遇事優(yōu)柔寡斷,舉棋不定。 2、結構緊湊,表明凡事小心謹慎,處處提防。 3、整體感差...
    江戶川柯鎮(zhèn)惡閱讀 411評論 0 0
  • 1 逢年過節(jié),朋友聚會,喝酒當然是必不可少的。不管你的酒量是好是差,對于很多人來說,感情全在酒里。風府君自從開上車...
    風府君閱讀 754評論 2 1

友情鏈接更多精彩內容