通过命令行打包iOS企业应用时CNCopyCurrentNetworkInfo返回nil问题
问题:命令行归档分发企业应用时WiFi SSID获取返回nil(Xcode归档正常)
我的应用部署目标为iOS 13,使用CNCopyCurrentNetworkInfo获取WiFi SSID信息。但仅在通过命令行工具归档并分发企业应用时出现异常:WiFi SSID信息始终返回nil,通过Xcode归档则无此问题。
使用的归档与导出命令如下:
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme archive -configuration MyConfig -sdk iphoneos -archivePath MyArchivePath CODE_SIGNING_ALLOWED=NOxcodebuild -exportArchive -archivePath MyArchivePath -exportPath MyExportPath -exportOptionsPlist MyExportOptionPlist
注:已添加获取SSID所需的全部必要权限与配置:
Privacy - Location When In Use Usage Description(使用期间获取位置权限描述)- 授权文件(entitlements)中已添加
Access WiFi Information权限
解决方法
问题根源在于归档命令中的CODE_SIGNING_ALLOWED=NO参数——这个参数会跳过代码签名流程,导致授权文件里的Access WiFi Information权限无法被正确嵌入到最终应用包中,而Xcode归档时会自动完成签名和权限嵌入,所以功能正常。
修改步骤:
- 移除归档命令中的
CODE_SIGNING_ALLOWED=NO参数,确保签名流程正常执行,让授权文件的权限生效。 - 若需指定企业签名身份,可在归档命令中补充签名参数,示例:
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme archive -configuration MyConfig -sdk iphoneos -archivePath MyArchivePath CODE_SIGNING_IDENTITY="你的企业签名身份" PROVISIONING_PROFILE_SPECIFIER="你的描述文件名称" - 确认
exportOptionsPlist文件配置正确:将signingStyle设为manual,并指定对应的signingCertificate和provisioningProfiles字段。
修改后重新归档导出,测试WiFi SSID获取功能即可恢复正常。
内容的提问来源于stack exchange,提问作者nithindev.n
相关产品推荐
相关产品推荐

