微信小程序、app之间的跳转
1.微信小程序 --> 微信小程序(之前有須為同一公眾號(hào)下的小程序這一限制,現(xiàn)在可隨意跳轉(zhuǎn))
首先說(shuō)一下到另一個(gè)小程序需要的東西:
跳轉(zhuǎn)目標(biāo)小程序的APPID
使用navigator組件或者微信小程序API(wx.navigateToMiniProgram)
一、如何獲取目標(biāo)小程序APPID(以微信讀書微信小程序?yàn)槔?#xff09;
二、實(shí)現(xiàn)跳轉(zhuǎn)
? 方法一:組件實(shí)現(xiàn)(在項(xiàng)目對(duì)應(yīng)的 wxml 中使用 navigator 標(biāo)簽進(jìn)行配置)
<navigator target="miniProgram" open-type="navigate" app-id="小程序APPID" path="" version="release">打開另一個(gè)小程序</navigator>? 方法二:js實(shí)現(xiàn)(給跳轉(zhuǎn)按鈕綁定事件函數(shù),在事件函數(shù)中調(diào)用下面的api)
wx.navigateToMiniProgram({appId: '',//要打開的小程序 appIdpath: 'page/index/index?id=123',//打開的頁(yè)面路徑,如果為空則打開首頁(yè)extraData: {foo: 'bar'//需要傳遞給目標(biāo)小程序的數(shù)據(jù),目標(biāo)小程序可在 App.onLaunch,App.onShow 中獲取到這份數(shù)據(jù)},envVersion: 'develop',//要打開的小程序版本。develop 開發(fā)版、trial 體驗(yàn)版、release 正式版。僅在當(dāng)前小程序?yàn)殚_發(fā)版或體驗(yàn)版時(shí)此參數(shù)有效。如果當(dāng)前小程序是正式版,則打開的小程序必定是正式版。success(res) {// 打開成功} })? 另: 如果打開之后想返回之前的小程序 使用 wx.navigateBackMiniProgram
返回到上一個(gè)小程序,只有在當(dāng)前小程序是被其他小程序打開時(shí)可以調(diào)用成功? 跳轉(zhuǎn)效果在開發(fā)者工具中預(yù)覽不出,在真機(jī)上可進(jìn)行效果預(yù)覽
說(shuō)明:①?gòu)?2020 年 4 月 24 日起,使用跳轉(zhuǎn)其他小程序功能將無(wú)需在全局配置中聲明跳轉(zhuǎn)名單,調(diào)用此接口時(shí)將不再校驗(yàn)所跳轉(zhuǎn)的 AppID 是否在 navigateToMiniProgramAppIdList 中。②從 2020 年 4 月 24 日起,跳轉(zhuǎn)其他小程序?qū)⒉辉偈軘?shù)量限制,使用此功能時(shí)請(qǐng)注意遵守運(yùn)營(yíng)規(guī)范。
在老版本小程序中,需要在app.json全局配置中設(shè)置白名單,如下所示:
"navigateToMiniProgramAppIdList": ["wx9fbad659d526c9bc","wx66d9cf3762c49a1a","小程序APYID"]關(guān)于以上說(shuō)明詳情參考:https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html
2.微信小程序 <–>app(根據(jù)官方說(shuō)明不能由小程序跳轉(zhuǎn)至任意app,只能跳回app,也就是只能從app跳至小程序,再由小程序跳回app)
打開APP功能需要用戶主動(dòng)觸發(fā)才能打開 APP,所以不由 API 來(lái)調(diào)用,需要用 open-type 的值設(shè)置為 launchApp 的 button 組件的點(diǎn)擊來(lái)觸發(fā)。
當(dāng)小程序從 APP 打開的場(chǎng)景打開時(shí)(場(chǎng)景值 1069),小程序會(huì)獲得返回 APP 的能力,此時(shí)用戶點(diǎn)擊按鈕可以打開拉起該小程序的 APP。即小程序不能打開任意 APP,只能 跳回 APP。
在一個(gè)小程序的生命周期內(nèi),只有在特定條件下,才具有打開 APP 的能力,這個(gè)能力的規(guī)則如下:
當(dāng)小程序從 1069 場(chǎng)景打開時(shí),可以打開 APP。
當(dāng)小程序從非 1069 的打開時(shí),會(huì)在小程序框架內(nèi)部會(huì)管理的一個(gè)狀態(tài),為 true 則可以打開 APP,為 false 則不可以打開 APP。這個(gè)狀態(tài)的維護(hù)遵循以下規(guī)則:
- 當(dāng)小程序從以下場(chǎng)景打開時(shí),保持上一次打開小程序時(shí)打開 App 能力的狀態(tài):
- 從其他小程序返回小程序(場(chǎng)景值1038)時(shí)(基礎(chǔ)庫(kù) 2.2.4 及以上版本支持)
- 小程序從聊天頂部場(chǎng)景(場(chǎng)景值1089)中的「最近使用」內(nèi)打開時(shí)
- 長(zhǎng)按小程序右上角菜單喚出最近使用歷史(場(chǎng)景值1090)打開時(shí)
- 發(fā)現(xiàn)欄小程序主入口,「最近使用」列表(場(chǎng)景值1001)打開時(shí)(基礎(chǔ)庫(kù)2.17.3及以上版本支持)
- 浮窗(場(chǎng)景值1131、1187)打開時(shí)(基礎(chǔ)庫(kù)2.17.3及以上版本支持)
- 當(dāng)小程序從非以上場(chǎng)景打開時(shí),不具有打開 APP 的能力,該狀態(tài)置為 false。
使用方法
小程序端
需要將 button 組件 open-type 的值設(shè)置為 launchApp。如果需要在打開 APP 時(shí)向 APP 傳遞參數(shù),可以設(shè)置 app-parameter 為要傳遞的參數(shù)。通過 binderror 可以監(jiān)聽打開 APP 的錯(cuò)誤事件。
app 端
APP 需要接入 OpenSDK。 文檔請(qǐng)參考 iOS / Android
Android 第三方 app 需要處理 ShowMessageFromWX.req 的微信回調(diào),iOS 則需要將 appId 添加到第三方 app 工程所屬的 plist 文件 URL types 字段。 app-parameter 的獲取方法,參數(shù)解析請(qǐng)參考 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 事件參數(shù)說(shuō)明
| invalid scene | 調(diào)用場(chǎng)景不正確,即此時(shí)的小程序不具備打開 APP 的能力。 |
所以要實(shí)現(xiàn)小程序跳轉(zhuǎn)至app大概有以下幾種思路:
1、利用官方api
就是上面提到的官方解決方案。需要app接入開放平臺(tái),并且與小程序?qū)儆谕毁~號(hào)下。最主要的問題是該方案僅適用于通過app打開小程序,或者通過app分享的卡片打開小程序,其他情況無(wú)法跳轉(zhuǎn),故在常用的場(chǎng)景下,該方案基本不可行。
2、利用webview網(wǎng)頁(yè)跳轉(zhuǎn)
我們可以在手機(jī)默認(rèn)瀏覽器中直接在一個(gè)網(wǎng)頁(yè)中打開app;那么在微信小程序web-view中是否可以呢?實(shí)際上web-view有大量權(quán)限限制,基本除了展示信息,其他交互都需要通過小程序原生代碼實(shí)現(xiàn)。
3、利用默認(rèn)瀏覽器跳轉(zhuǎn)
在手機(jī)默認(rèn)瀏覽器中,我們可以直接在一個(gè)網(wǎng)頁(yè)中打開app;但是微信小程序做了限制,不允許跳轉(zhuǎn)到默認(rèn)瀏覽器,故該方案不可行。
4、利用應(yīng)用寶跳轉(zhuǎn)
應(yīng)用寶是騰訊的,是否可以跳轉(zhuǎn)到應(yīng)用寶,然后打開app或下載呢?然而由于網(wǎng)頁(yè)域名鑒權(quán),除了騰訊自家的部分特殊小程序,其他小程序都是無(wú)法跳轉(zhuǎn)的。
以上4種方案基本不可行,后來(lái)看到一篇博客寫的使用小程序客服功能(原文:https://itlao5.com/wp/933.html),就試了下,發(fā)現(xiàn)真的可以,但是這種方案也有比較明顯的缺點(diǎn)。
5、利用小程序客服的功能
小程序有小程序客服這個(gè)功能,而小程序客服是微信中的一個(gè)類似于公眾號(hào)的功能;我們知道公眾號(hào)是可以間接跳轉(zhuǎn)到app的,那么跳轉(zhuǎn)app的方案就出來(lái)了,小程序先打開客服頁(yè)面,然后在客服頁(yè)面通過關(guān)鍵字回復(fù)一個(gè)url(或卡片),點(diǎn)擊url(或卡片)跳轉(zhuǎn)到app推廣鏈接,然后就可以打開或下載app了。
方案有了,那么該嘗試下如何實(shí)施了:
(1)先跳轉(zhuǎn)到微信小程序客服
官方提供了button可以直接跳轉(zhuǎn),設(shè)置open-type='contact’即可:
<button open-type='contact'>點(diǎn)擊進(jìn)入【APP】</button>(2)跳轉(zhuǎn)到微信小程序客服,輸入關(guān)鍵字回復(fù)app下載宣傳頁(yè)或宣傳二維碼
客服會(huì)話關(guān)鍵詞回復(fù),這個(gè)小程序官方的僅支持文字回復(fù),建議使用api接口來(lái)實(shí)現(xiàn)卡片或圖片回復(fù),可以自己開發(fā),也可以用第三方平臺(tái),如:芝麻服務(wù)助手、知己助手等,反正就是搜索微信小程序客服,可以出來(lái)一大堆。
(3)這個(gè)方案缺點(diǎn)也很明顯,就是操作步驟過多,還有一個(gè)就是無(wú)法精準(zhǔn)定位到具體app頁(yè)面,比如我在看某篇文章,點(diǎn)擊打開app其實(shí)是希望還是進(jìn)入到app的這篇文章頁(yè)面,使用客服功能就不容易做到。
但是在目前無(wú)法做到十全十美的方案下,該方案也可以變通解決。
案缺點(diǎn)也很明顯,就是操作步驟過多,還有一個(gè)就是無(wú)法精準(zhǔn)定位到具體app頁(yè)面,比如我在看某篇文章,點(diǎn)擊打開app其實(shí)是希望還是進(jìn)入到app的這篇文章頁(yè)面,使用客服功能就不容易做到。
但是在目前無(wú)法做到十全十美的方案下,該方案也可以變通解決。
總結(jié)
以上是生活随笔為你收集整理的微信小程序、app之间的跳转的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTAP 快速上手指南
- 下一篇: 基于FPGA的flash分区实现多功能转