从iOS9开始系统安全策略更新,加入对用户隐私以及禁止扫描系统信息的控制,限制了应用对scheme协议的访问。需要将其它App注册的scheme添加到应用访问白名单(LSApplicationQueriesSchemes)中才能实现以下功能: - 通过scheme检查其它App是否安装,不添加到白名单则检测结果为未安装(即使应用已经安装) - 通过scheme协议调用其它App,不添加到白名单则会弹出提示框,用户确认后才能启动应用,添加到白名单列表后则无需用户确认直接启动应用。 **注意** iOS15及以上系统限制每个应用最多只能配置50个白名单列表,超过50个的白名单会失效,在配置白名单时需要注意以下问题: - 部分模块使用的三方SDK(如微信登录)需要添加白名单列表,三方SDK添加的白名单优先级高于manifest.json中配置的白名单 - uni原生插件可能也会添加白名单列表,uni原生插件添加的白名单优先级高于manifest.json中配置的白名单 ### 设置应用访问白名单列表 #### 可视化界面配置 打开项目的manifest.json文件,切换到“App常用其它设置”项,在“iOS设置”下的“应用访问白名单”编辑框中配置: ![](https://partner-dcloud-native.oss-cn-hangzhou.aliyuncs.com/images/uniapp/ios/chemewhitelist.png) **注意:多个白名单列表使用“,”分割** > 提示:如果可视化界面无法编辑,请切换到“源码视图”配置 #### 源码视图配置 打开项目的manifest.json文件,切换到“代码视图” - uni-app项目 在manifest.json文件的"app-plus"->"distribute"->"ios"下添加urlschemewhitelist节点数据如下: ``` json "plus": { "distribute": { "ios": { "urlschemewhitelist": "baidumap,iosamap", //... }, //... }, //... }, //... ``` - 5+ App/Wap2App项目 把上面的urlschemewhitelist节点数据放到manifest.json的"plus"->"distribute"->"apple"节点下 **提示** >低版本HBuilderX中urlschemewhitelist字段值为数组类型,如下: >``` json >"urlschemewhitelist": ["baidumap","iosamap"] >``` >云端打包也可以兼容生效,只是无法在可视化界面编辑。 **注意** - 配置后需提交云端打包后才能生效,真机运行时请使用[自定义调试基座](https://ask.dcloud.net.cn/article/35115) - 离线打包请直接在XCode工程中修改Info.plist文件的`LSApplicationQueriesSchemes`字段值 ### 云端打包默认添加应用访问白名单列表 为了方便开发者调用一些常用的第三方应用,云端打包默认已经添加以下白名单 ``` txt 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个时,默认添加的白名单列表将失效。