apicloud拉起小程式並傳遞引數

冷露發表於2018-11-20

最近工作中遇到一個需求:App拉起微信小程式。App是用APICloud開發的。查閱APICloud文件發現 端API->開放SDK->wx模組下有launchMiniProgram方法可以實現官方文件

於是在專案中新增wx模組。
官方示例程式碼:

var wx = api.require(`wx`);
wx.launchMiniProgram({
    apiKey: ``, // 字串,微信開放平臺獲取的appid, 不傳則從當前widget的config.xml中讀取
    miniProgramType: `test`, // 字串,[`test`, `preview`, `release`](開發版,體驗版,正式版)預設test
    userName: ``, // 字串,小程式的原始ID
    path: ``, // 字串,拉起小程式頁面的可帶引數路徑,不填預設拉起小程式首頁
}, function(ret, err) {
    if (ret.status) {
        alert(`成功`);
    } else {
        alert(err.code);
    }
});

按照官方文件配置發現只能跳轉到微信,不能拉起小程式。
apicloud App端程式碼:
config.xml檔案小程式有關配置如下:

  <feature name="wx">
    <param name="urlScheme" value="wx1007b2********68"/>
    <param name="apiKey" value="wx1007b2********68"/>
    <param name="apiSecret" value="3******67176****39244b********25"/>
  </feature>

拉起小程式相關程式碼:

function launchMini () {
    var wx = api.require(`wx`)
    wx.launchMiniProgram({
        // apiKey: ``, // 不知道是因為配置檔案中已經配置過了還是什麼原因,帶上該項引數僅能開啟微信,無法拉起小程式,註釋後成功拉起小程式
        miniProgramType: `preview`,
        userName: `gh_******`,
        path: `pages/index/index?from=app666` // 傳遞引數from 值為 app666
    }, function(ret, err) {
        if (ret.status) {
            alert(`成功`)
        } else {
            alert(err.code)
        }
    }
}

小程式端程式碼:
index.js

onLoad: function (options) {
    console.log(options)
    console.log(options.from) // `app666`
}

相關文章