uni-app如何判斷是否安裝騰訊QQ微信微博支付寶淘寶等客戶端,解決IOS應用審核被拒:用戶應該能夠使用微信登錄並訪問自己的帳戶,而無需安裝任何其他應用程序。


  HTML5+ API Reference的蠻多接口挺好用的,uni-app App 端內置 HTML5+ 引擎,讓 js 可以直接調用豐富的原生能力。官方文檔:http://www.html5plus.org/doc/zh_cn/runtime.html

  以及先了解下:uni-app使用HTML5+ 的注意事項

一、問題背景

  IOS上傳app store又被拒了,還是之前說是微信安裝的原因

Guideline 4.2.3 - Design - Minimum Functionality We were required to install the WeChat app before we could log in via WeChat. 
Users should be able to log in with WeChat and access their accounts without having to install any additional apps. Next Steps If you would like to offer authentication through WeChat, please use a mechanism that allows users to log in with WeChat
from within your app without first having to install an additional app. We recommend implementing the Safari View Controller API to display web content within your app.
The Safari View Controller allows the display of a URL and inspection of the certificate
from an embedded browser in an app

so that customers can verify the webpage URL and SSL certificate to confirm they are entering their sign in credentials
into a legitimate page. Resources For additional information on the Safari View Controller API, please review the What
's New in Safari webpage. Please see attached screenshot for details.
准則4.2.3-設計-最低功能 我們需要先安裝微信應用程序,然后才能通過微信登錄。用戶應該能夠使用微信登錄並訪問自己的帳戶,而無需安裝任何其他應用程序。 下一步 如果您想通過微信提供身份驗證,請使用一種機制,允許用戶從您的應用程序中使用微信登錄,而無需先安裝其他應用程序。 我們建議實現Safari視圖控制器API來顯示應用程序中的web內容。Safari View Controller允許在應用程序中顯示URL和檢查嵌入式瀏覽器中的證書,
以便客戶可以驗證網頁URL和SSL證書,以確認他們正在將登錄憑據輸入合法頁面。 資源 有關Safari視圖控制器API的更多信息,請查看Safari網頁中的新增內容。 有關詳細信息,請參閱隨附的屏幕截圖。

  也就是說設備未安裝微信客戶端,點微信登錄的時候提示報錯。還記得上次這個原因拒絕,是要我們提供了等值的蘋果登錄(sign in with apple)就通過了,沒想到更新版本的時候又報這個原因拒絕,坑啊,為什么第一次因為這個原因拒絕的時候,要我們提供蘋果登錄呢。

  簡單的說,就是:使用微信分享、登錄必須安裝微信客戶端,QQ登錄、QQ空間分享過程中必須安裝手機QQ客戶端,在未安裝客戶端的設備上測試會提示下載,這是不符合蘋果審核規則的。

  解決方法:首先調用微信SDK或QQ互聯SDK的方法檢測是否安裝微信/QQ客戶端:

  [QQApi isQQInstalled]

  isWXAppInstalled

  如果未安裝客戶端則隱藏對應登錄或分享按鈕。

  經過驗證上述方法可以有效通過APPstore審核,這邊會密切關注微信及QQ互聯方面的動態,如果有更好的解決方案,也會第一時間更新。

  這是原生app的方法,那么需要考慮uniapp如何判斷設備上是否安裝微信之類的。其實也有比較簡單的api提供。

二、uni-app如何判斷是否安裝騰訊QQ微信微博支付寶淘寶客戶端呢

  HTML5+ API Reference里有介紹,官方傳送門:http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.isApplicationExist、這個挺多API都是蠻好用的,可以仔細研究下。
 
1、判斷第三方程序是否已存在
Boolean plus.runtime.isApplicationExist(appInf);

(1)說明:如果第三方程序已安裝則返回true,未安裝則返回false。

(2)參數:appInf: ( ApplicationInf ),必選,要判斷第三方程序的描述信息

  關於 ApplicationInf 參數,官方也有詳細描述,查看:http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.ApplicationInf

  Android平台需要通過設置 appInf 的 pname 屬性(包名)進行查詢。

  iOS平台需要通過設置 appInf 的 action 屬性(Scheme)進行查詢,

  在iOS9以后需要添加白名單才可查詢,在manifest.json文件plus->distribute->apple->urlschemewhitelist節點下添加(如urlschemewhitelist:[“weixin”]).

(3)返回值:Boolean ,第三方程序已安裝則返回true,否則返回false。
 
 2、常用平台

  判斷其他應用是否安裝,可以用對應的pname和action來判斷。以下是一些常用平台的pname和action。

平台 pname action
微信 com.tencent.mm weixin://
QQ com.tencent.mobileqq mqq://
新浪微博 com.sina.weibo sinaweibo://
淘寶 com.taobao.taobao taobao://
支付寶 com.eg.android.AlipayGphone alipay://
京東 com.jingdong.app.mall openApp.jdMobile://
優酷 com.youku.phone youku://
高度地圖 com.autonavi.minimap iosamap://
百度地圖 com.baidu.BaiduMap baidumap://

3、代碼示例

// 判斷第三方程序(微信) 是否安裝
function checkApp(){ if(plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})){ console.log("微信應用已安裝"); }else{ console.log("微信應用未安裝"); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM