Xcode iOS归档发布版React Native应用未触发网络访问权限弹窗问题
解决方案
第一步:解决Info.plist勾选target后的归档报错
你遇到的重复构建命令报错,是因为手动把Info.plist加入Target成员后,同时存在「处理Info.plist」和「复制Info.plist到包内」两个冲突的构建步骤,按以下操作修复:
- 打开Xcode项目的Target设置,切换到
Build Phases标签 - 找到
Copy Bundle Resources分组,删除其中的Info.plist条目 - 重新归档即可解决该报错
第二步:修复Release构建下权限不弹出、搜不到投屏设备问题
Debug运行正常、归档后功能异常几乎都是构建配置差异导致,按优先级逐一排查:
1. 确认能力配置覆盖所有构建模式
- 打开Target的
Signing & Capabilities标签,顶部配置选择器切换为All Configurations - 确认
Access WiFi Information能力处于勾选状态,没有仅对Debug生效 - 若使用了Cast相关的自定义App Group等配置,也需确认对所有构建模式生效
2. 确认Info.plist配置覆盖所有构建模式
- 打开Target的
Build Settings标签,搜索INFOPLIST_FILE配置项 - 确认Debug和Release配置指向的Info.plist路径完全一致,避免Release使用了缺失配置的plist文件
- 额外补充Google Cast iOS14+要求的Bonjour服务配置到Info.plist:
<key>NSBonjourServices</key> <array> <string>_googlecast._tcp</string> <string>_YOUR_GOOGLE_CAST_APP_ID._googlecast._tcp</string> </array>
替换YOUR_GOOGLE_CAST_APP_ID为你实际使用的Cast应用ID。
3. 排查条件编译屏蔽了Cast相关逻辑
- 检查项目中JWPlayer Cast模块初始化、权限申请相关代码,确认没有被
__DEV__等Debug专属的条件判断包裹,导致Release构建时相关逻辑被裁剪 - 建议在用户点击投屏按钮前,主动触发蓝牙和本地网络权限申请,避免SDK内部申请逻辑在Release优化下不生效:
- 蓝牙权限:调用
CBCentralManager的requestAlwaysAuthorization方法 - 本地网络权限:调用相关API主动触发,iOS会自动弹出申请弹窗
- 蓝牙权限:调用
4. 定位具体报错信息
- 将AdHoc包安装到真机后,打开Xcode的
Window > Devices and Simulators,选择对应设备查看控制台日志 - 点击投屏按钮时筛选权限、Cast、JWPlayer相关关键词,可快速定位具体是缺少配置还是逻辑调用问题
内容的提问来源于stack exchange,提问作者JRedford
相关产品推荐
相关产品推荐

