微信小程序、app之间的跳转
1.微信小程序 --> 微信小程序(之前有須為同一公眾號下的小程序這一限制,現在可隨意跳轉)
首先說一下到另一個小程序需要的東西:
跳轉目標小程序的APPID
使用navigator組件或者微信小程序API(wx.navigateToMiniProgram)
一、如何獲取目標小程序APPID(以微信讀書微信小程序為例)
二、實現跳轉
? 方法一:組件實現(在項目對應的 wxml 中使用 navigator 標簽進行配置)
<navigator target="miniProgram" open-type="navigate" app-id="小程序APPID" path="" version="release">打開另一個小程序</navigator>? 方法二:js實現(給跳轉按鈕綁定事件函數,在事件函數中調用下面的api)
wx.navigateToMiniProgram({appId: '',//要打開的小程序 appIdpath: 'page/index/index?id=123',//打開的頁面路徑,如果為空則打開首頁extraData: {foo: 'bar'//需要傳遞給目標小程序的數據,目標小程序可在 App.onLaunch,App.onShow 中獲取到這份數據},envVersion: 'develop',//要打開的小程序版本。develop 開發版、trial 體驗版、release 正式版。僅在當前小程序為開發版或體驗版時此參數有效。如果當前小程序是正式版,則打開的小程序必定是正式版。success(res) {// 打開成功} })? 另: 如果打開之后想返回之前的小程序 使用 wx.navigateBackMiniProgram
返回到上一個小程序,只有在當前小程序是被其他小程序打開時可以調用成功? 跳轉效果在開發者工具中預覽不出,在真機上可進行效果預覽
說明:①從 2020 年 4 月 24 日起,使用跳轉其他小程序功能將無需在全局配置中聲明跳轉名單,調用此接口時將不再校驗所跳轉的 AppID 是否在 navigateToMiniProgramAppIdList 中。②從 2020 年 4 月 24 日起,跳轉其他小程序將不再受數量限制,使用此功能時請注意遵守運營規范。
在老版本小程序中,需要在app.json全局配置中設置白名單,如下所示:
"navigateToMiniProgramAppIdList": ["wx9fbad659d526c9bc","wx66d9cf3762c49a1a","小程序APYID"]關于以上說明詳情參考:https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html
2.微信小程序 <–>app(根據官方說明不能由小程序跳轉至任意app,只能跳回app,也就是只能從app跳至小程序,再由小程序跳回app)
打開APP功能需要用戶主動觸發才能打開 APP,所以不由 API 來調用,需要用 open-type 的值設置為 launchApp 的 button 組件的點擊來觸發。
當小程序從 APP 打開的場景打開時(場景值 1069),小程序會獲得返回 APP 的能力,此時用戶點擊按鈕可以打開拉起該小程序的 APP。即小程序不能打開任意 APP,只能 跳回 APP。
在一個小程序的生命周期內,只有在特定條件下,才具有打開 APP 的能力,這個能力的規則如下:
當小程序從 1069 場景打開時,可以打開 APP。
當小程序從非 1069 的打開時,會在小程序框架內部會管理的一個狀態,為 true 則可以打開 APP,為 false 則不可以打開 APP。這個狀態的維護遵循以下規則:
- 當小程序從以下場景打開時,保持上一次打開小程序時打開 App 能力的狀態:
- 從其他小程序返回小程序(場景值1038)時(基礎庫 2.2.4 及以上版本支持)
- 小程序從聊天頂部場景(場景值1089)中的「最近使用」內打開時
- 長按小程序右上角菜單喚出最近使用歷史(場景值1090)打開時
- 發現欄小程序主入口,「最近使用」列表(場景值1001)打開時(基礎庫2.17.3及以上版本支持)
- 浮窗(場景值1131、1187)打開時(基礎庫2.17.3及以上版本支持)
- 當小程序從非以上場景打開時,不具有打開 APP 的能力,該狀態置為 false。
使用方法
小程序端
需要將 button 組件 open-type 的值設置為 launchApp。如果需要在打開 APP 時向 APP 傳遞參數,可以設置 app-parameter 為要傳遞的參數。通過 binderror 可以監聽打開 APP 的錯誤事件。
app 端
APP 需要接入 OpenSDK。 文檔請參考 iOS / Android
Android 第三方 app 需要處理 ShowMessageFromWX.req 的微信回調,iOS 則需要將 appId 添加到第三方 app 工程所屬的 plist 文件 URL types 字段。 app-parameter 的獲取方法,參數解析請參考 Android SDKSample 中 WXEntryActivity 中的 onResp 方法以及 iOS SDKSample 中 WXApiDelegate 中的 onResp 方法。
示例代碼
<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打開APP</button> Page({launchAppError (e) {console.log(e.detail.errMsg)} })error 事件參數說明
| invalid scene | 調用場景不正確,即此時的小程序不具備打開 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的這篇文章頁面,使用客服功能就不容易做到。
但是在目前無法做到十全十美的方案下,該方案也可以變通解決。
案缺點也很明顯,就是操作步驟過多,還有一個就是無法精準定位到具體app頁面,比如我在看某篇文章,點擊打開app其實是希望還是進入到app的這篇文章頁面,使用客服功能就不容易做到。
但是在目前無法做到十全十美的方案下,該方案也可以變通解決。
總結
以上是生活随笔為你收集整理的微信小程序、app之间的跳转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTAP 快速上手指南
- 下一篇: 基于FPGA的flash分区实现多功能转