最近做的微信銀行的項目進入了自測階段,然后在App下載功能自測中遇到一個問題(Android沒問題,iOS有問題),鼓搗大半天才發現代碼沒問題,只是因為公眾號自定義菜單沒有配好,導致只能以頁面鏈接的形式測試,才發現鏈接在不同類型的對話框中的不同。
問題場景:App下載功能,點擊“下載手機銀行”按鈕,js代碼判斷手機系統(Android或iOS),發接口請求后端跳轉鏈接,Android跳轉鏈接是騰訊應用寶中手機銀行的http地址,iOS跳轉鏈接是AppStore中手機銀行的http地址。
問題描述:當點擊“下載手機銀行”按鈕時,接口請求返回無異常,但是iOS返回的http地址使用location.href無法跳轉(Android正常跳轉)。
求索結論:
1、當我把App下載功能頁面鏈接通過微信聊天發送給同事時,同事(iPhone13)在微信聊天窗口點擊鏈接進入App下載頁面,點擊下載按鈕時,iOS微信客戶端無法正常打開AppStore。
2、當同事將我發給他的頁面鏈接,隨便找了個公眾號,發送到公眾號聊天窗口,然后從公眾號聊天窗口點擊鏈接進入App下載頁面,點擊下載按鈕時,iOS微信客戶端就可以正常打開AppStore了。
據此分析,微信iOS客戶端為防止有人通過微信聊天形式發送頁面鏈接誘導打開AppStore,就會檢測攔截打開AppStore的行為;然而在公眾號聊天窗口中的頁面鏈接就不會攔截打開AppStore的行為。因為我們開發的微信銀行項目是要掛到公眾號上面的,所以在自定義菜單配置完成之后,用戶通過點擊菜單進入App下載功能,點擊下載按鈕,iOS就可以正常打開AppStore了。
一句話就是,微信iOS客戶端中人與人聊天窗口中的頁面鏈接功能會被攔截打開AppStore的行為,而人與公眾號聊天窗口中的頁面鏈接功能不會攔截打開AppStore的行為。