微信開放從小程序跳轉到手機應用的功能,具體來說,這項功能屬於騰訊此前開放的“app 鏈接分享到微信”的延伸功能,用戶通過某款 app 打開微信並直接跳轉到小程序頁面后,微信將允許用戶直接在小程序頁面打開來源 app。微信還強調了這項功能暫時不支持其他路徑,想利用小程序為 app 導流或者說你打算制作一個 app 推薦的小程序,目前來看依然是做不到的。
其實這項功能的邏輯和蘋果從 iOS 9 開始增加的“返回上一個應用”功能十分相似,當用戶從一個 app 跳轉到另一個 app 時,可以直接通過屏幕左上方的鏈接直接返回到來源 app。
此功能需要用戶主動觸發才能打開 APP,所以不由 API 來調用,需要用
open-type的值設置為launchApp的 button 組件的點擊來觸發。當小程序從 APP 分享消息卡片的場景打開(場景值 1036,APP 分享小程序文檔 iOS / Android) 或從 APP 打開的場景打開時(場景值 1069),小程序會獲得打開 APP 的能力,此時用戶點擊按鈕可以打開分享該小程序卡片/拉起該小程序的 APP。即小程序不能打開任意 APP,只能
跳回APP。在一個小程序的生命周期內,只有在特定條件下,才具有打開 APP 的能力。
在基礎庫 < 2.5.1 的版本,這個能力的規則如下:
當小程序從 1069 場景打開時,可以打開 APP。
當小程序從非 1069 的打開時,會在小程序框架內部會管理的一個狀態,為 true 則可以打開 APP,為 false 則不可以打開 APP。這個狀態的維護遵循以下規則:
- 當小程序從 App 分享消息卡片(場景值1036)打開時,該狀態置為 true。
- 當小程序從以下場景打開時,保持上一次打開小程序時打開 App 能力的狀態:當小程序從非以上場景打開時,不具有打開 APP 的能力,該狀態置為 false。
- 從其他小程序返回小程序(場景值1038)時(基礎庫 2.2.4 及以上版本支持)
- 小程序從聊天頂部場景(場景值1089)中的「最近使用」內打開時
- 長按小程序右上角菜單喚出最近使用歷史(場景值1090)打開時
- 當小程序從非以上場景打開時,不具有打開 APP 的能力,該狀態置為 false。

也就是說,小程序喚起app只能在特定場景下才能實現,並且在用戶沒有下載安裝app的情況下,也是不支持跳轉到下載頁的,所以官網提供的方案要想從小程序引流到app還不是特別好的方式。
那么只能繼續查方案,大概有以下幾種思路:
1、利用官方api
就是上面提到的官方解決方案。需要app接入開放平台,並且與小程序屬於同一賬號下。最主要的問題是該方案僅適用於通過app打開小程序,或者通過app分享的卡片打開小程序,其他情況無法跳轉,故在常用的場景下,該方案基本不可行。
2、利用webview網頁跳轉
我們可以在手機默認瀏覽器中直接在一個網頁中打開app;那么在微信小程序web-view中是否可以呢?實際上web-view有大量權限限制,基本除了展示信息,其他交互都需要通過小程序原生代碼實現。
3、利用默認瀏覽器跳轉
在手機默認瀏覽器中,我們可以直接在一個網頁中打開app;但是微信小程序做了限制,不允許跳轉到默認瀏覽器,故該方案不可行。
4、利用應用寶跳轉
應用寶是騰訊的,是否可以跳轉到應用寶,然后打開app或下載呢?然而由於網頁域名鑒權,除了騰訊自家的部分特殊小程序,其他小程序都是無法跳轉的。
以上4種方案基本不可行,后來看到一篇博客寫的使用小程序客服功能(原文:https://itlao5.com/wp/933.html),就試了下,發現真的可以,但是這種方案也有比較明顯的缺點。
5、利用小程序客服的功能
小程序有小程序客服這個功能,而小程序客服是微信中的一個類似於公眾號的功能;我們知道公眾號是可以間接跳轉到app的,那么跳轉app的方案就出來了,小程序先打開客服頁面,然后在客服頁面通過關鍵字回復一個url(或卡片),點擊url(或卡片)跳轉到app推廣鏈接,然后就可以打開或下載app了。
方案有了,那么該嘗試下如何實施了:
(1)先跳轉到微信小程序客服
官方提供了button可以直接跳轉,設置open-type='contact'即可:
<button open-type='contact'>點擊進入【墨天輪APP】</button>
(2)跳轉到微信小程序客服,輸入關鍵字回復app下載宣傳頁或宣傳二維碼
客服會話關鍵詞回復,這個小程序官方的僅支持文字回復,建議使用api接口來實現卡片或圖片回復,可以自己開發,也可以用第三方平台,如:芝麻服務助手、知己助手等,反正就是搜索微信小程序客服,可以出來一大堆。
(3)這個方案缺點也很明顯,就是操作步驟過多,還有一個就是無法精准定位到具體app頁面,比如我在看某篇文章,點擊打開app其實是希望還是進入到app的這篇文章頁面,使用客服功能就不容易做到。
但是在目前無法做到十全十美的方案下,該方案也可以變通解決。

這個消息推送是否可以寫一個api,然后接收消息,比如在某個文章頁打開的客服,就自動復制該文章的id及標識文章(比如:article/88),以此作為關鍵詞粘貼輸入回復,api再根據該關鍵詞返回不同的url二維碼。不過我也沒有嘗試,因為這樣操作用戶也比較麻煩。有好的方案歡迎賜教。
