遇到的問題
最近,在用uni-app混合方式開發app,在做微信授權登錄的時候,要判斷手機裏面是否安裝有微信客戶端,如果沒有安裝提示用戶「未安裝微信客戶端或版本過低」。剛開始用uniapp,很多語法都不太熟悉,心想,這個這麼常用的判斷,隨便搜索引擎一搜不就有了。正所謂面向百度編程,沒有什麼能難倒程序員的。結果一搜就懵了,不信你搜搜看,「uniapp判斷是否安裝微信」,完全找不到想要的。我還是不死心,搜索引擎沒有,官網總會有吧。去官網找了一圈,還是沒有找到,心灰意冷。
解決方案
說實話,我也不記得是怎樣找到這個方法的,方法非常簡單,以下是官方介紹。如果需要看代碼示例,請關注公衆號longyoung,回覆「uni判斷微信」,即可獲取我寫的代碼片段截圖,有不明白的也可以在公衆號提問。
官方介紹(傳送門)
判斷第三方程序是否已存在
Boolean plus.runtime.isApplicationExist(appInf);
1.0說明:
如果第三方程序已安裝則返回true,未安裝則返回false。
1.1參數:
appInf: ( ApplicationInf ) 必選 要判斷第三方程序的描述信息
Android平臺需要通過設置appInf的pname屬性(包名)進行查詢。iOS平臺需要通過設置appInf的action屬性(Scheme)進行查詢,在iOS9以後需要添加白名單纔可查詢,在manifest.json文件plus->distribute->apple->urlschemewhitelist節點下添加(如urlschemewhitelist:["weixin"]).
1.2返回值:
Boolean : 第三方程序已安裝則返回true,否則返回false。
常用平臺
判斷其他應用是否安裝,可以用對應的pname和action來判斷。以下是一些常用平臺的pname和action。
平臺 | pname | action |
---|---|---|
微信 | com.tencent.mm | weixin:// |
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:// |
PS:本文原創發於微信公衆號longyoung,關注並回復「51電子書」免費領取程序員必讀經典電子書。