从iOS9开始系统安全策略更新,加入对用户隐私以及禁止扫描系统信息的控制,限制了应用对scheme协议的访问。需要将其它App注册的scheme添加到应用访问白名单(LSApplicationQueriesSchemes)中才能实现以下功能:

  • 通过scheme检查其它App是否安装,不添加到白名单则检测结果为未安装(即使应用已经安装)
  • 通过scheme协议调用其它App,不添加到白名单则会弹出提示框,用户确认后才能启动应用,添加到白名单列表后则无需用户确认直接启动应用。

注意
iOS15及以上系统限制每个应用最多只能配置50个白名单列表,超过50个的白名单会失效,在配置白名单时需要注意以下问题:

  • 部分模块使用的三方SDK(如微信登录)需要添加白名单列表,三方SDK添加的白名单优先级高于manifest.json中配置的白名单
  • uni原生插件可能也会添加白名单列表,uni原生插件添加的白名单优先级高于manifest.json中配置的白名单

# 设置应用访问白名单列表

# 可视化界面配置

打开项目的manifest.json文件,切换到“App常用其它设置”项,在“iOS设置”下的“应用访问白名单”编辑框中配置:

注意:多个白名单列表使用“,”分割

提示:如果可视化界面无法编辑,请切换到“源码视图”配置

# 源码视图配置

打开项目的manifest.json文件,切换到“代码视图”

  • uni-app项目
    在manifest.json文件的"app-plus"->"distribute"->"ios"下添加urlschemewhitelist节点数据如下:
"plus": {  
"distribute": {  
    "ios": {  
        "urlschemewhitelist": "baidumap,iosamap",  
        //...  
    },  
    //...  
},  
//...  
},  
//... 
  • 5+ App/Wap2App项目
    把上面的urlschemewhitelist节点数据放到manifest.json的"plus"->"distribute"->"apple"节点下

提示

低版本HBuilderX中urlschemewhitelist字段值为数组类型,如下:

"urlschemewhitelist": ["baidumap","iosamap"]

云端打包也可以兼容生效,只是无法在可视化界面编辑。

注意

  • 配置后需提交云端打包后才能生效,真机运行时请使用自定义调试基座
  • 离线打包请直接在XCode工程中修改Info.plist文件的LSApplicationQueriesSchemes字段值

# 云端打包默认添加应用访问白名单列表

为了方便开发者调用一些常用的第三方应用,云端打包默认已经添加以下白名单

weixin
wechat
mqq
weibosdk2.5
weibosdk
mqqapi
mqzone
sinaweibo
sinaweibohd
mqqopensdkapiV3
mqqwpa
mqqopensdkapiV2
mqqOpensdkSSoLogin
qqmap
baidumap
iosamap
openApp.jdMobile
taobao
hbuilder
pinduoduo
imeituan
tmall
dianping
vipshop
yanxuan
suning
kaola
snssdk32
shark.video
wbmain
cydia
streamapp
kwai
pptv
bilibili
kugouURL
qqnews
zhihu
doubanradio
wccbyihaodian
ctrip
kuaikanmanhua
ntesopen
yddict
shanbay
gugutouchmanga
bobo
wtloginmqq2
qrxs
mailmaster
jcnhers
lightsky
gaeagj
yixin
ydcourse
awemesso'

注意
默认添加的应用访问白名单列表不会影响应用任何功能,当开发者配置的白名单超过50个时,默认添加的白名单列表将失效。