根據微信的官方文檔,小程式支援打開APP,專門研究了下這個API有什麼,官方文檔位址如下
https://mp.weixin.qq.com/debug/wxadoc/dev/component/button.html
launchApp 打開APP,可以通過app-parameter屬性設定向APP傳的參數
我們再看來看launchAPP的參數說明 https://mp.weixin.qq.com/debug/wxadoc/dev/api/launchApp.html
launchApp(OBJECT)
說明
因為需要使用者主動觸發才能打開 APP,是以該功能不由 API 來調用,需要用
open-type
的值設定為
launchApp
的
<button>
元件的點選來觸發。
當小程式從 APP 分享消息卡片的場景打開時(場景值 1036,APP 分享小程式文檔 iOS 參見,Android 參見),小程式會獲得打開 APP 的能力,此時使用者點選按鈕可以打開分享該卡片的 APP。即小程式不能打開任意 APP,隻能
跳回
分享該小程式卡片的 APP。
在一個小程式的生命周期内,隻有在特定條件下,才具有打開 APP 的能力。
打開 APP 的能力
可以了解為由小程式架構在内部管理的一個狀态,為 true 則可以打開 APP,為 false 則不可以打開 APP。
在小程式的生命周期内,這個狀态的初始值為 false,之後會随着小程式的每次打開(無論是啟動還是切到前台)而改變:
- 當小程式從 1036(App 分享消息卡片) 打開時,該狀态置為 true。
- 當小程式從 1089(微信聊天主界面下拉)或 1090(長按小程式右上角菜單喚出最近使用曆史)的場景打開時,該狀态不變,即保持上一次打開小程式時該狀态的值。
- 當小程式從非 1036/1089/1090 的場景打開,該狀态置為 false。
使用方法
需要将
<button>
元件
open-type
的值設定為
launchApp
。如果需要在打開 APP 時向 APP 傳遞參數,可以設定
app-parameter
為要傳遞的參數。通過
binderror
可以監聽打開 APP 的錯誤事件。
例子
<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打開APP</button>
Page({
launchAppError: function(e) {
console.log(e.detail.errMsg)
}
})
error 事件參數說明
值 | 說明 |
invalid scene | 調用場景不正确,即此時的小程式不具備打開 APP 的能力。 |
總結:小程式打開APP,前提是你是從APP内打開小程式,才能傳回打開APP,不然是不支援的,也就是說讓APP給小程式導流,然後再将流量傳回到APP的能力,但是真心期待能夠下載下傳APP。