提交App至苹果审核后出现API声明缺失问题,如何解决?
解决Expo React Native应用ITMS-91053隐私API声明问题
针对你遇到的App Store审核返回ITMS-91053错误,且已在app.json添加隐私清单配置仍无效的情况,可按以下步骤排查解决:
1. 确认Expo SDK版本兼容性
Expo从SDK 49开始正式支持privacyManifests自动配置,如果你使用的是低于49的版本:
- 优先升级到最新稳定SDK版本(执行
expo upgrade) - 若无法升级,需手动添加隐私清单文件(见步骤4)
2. 检查app.json隐私配置格式是否正确
很多问题出在配置格式或理由代码错误上,确保配置符合Expo要求,示例如下:
{ "expo": { "ios": { "privacyManifests": { "NSPrivacyAccessedAPICategoryDiskSpace": ["CA92.1"], "NSPrivacyAccessedAPICategoryFileTimestamp": ["C617.1"], "NSPrivacyAccessedAPICategorySystemBootTime": ["35F9.1"], "NSPrivacyAccessedAPICategoryUserDefaults": ["CA19.1", "CA19.2"] } } } }
注意:理由代码必须是苹果官方指定的,需与你应用实际使用场景匹配(比如CA92.1对应磁盘容量管理,C617.1对应文件排序/识别),不能随意填写。
3. 排查第三方依赖的隐私清单缺失
错误提示中的MagicMusicCreateAISongs大概率来自第三方依赖库,该库可能未内置隐私清单:
- 定位到该依赖(比如查看
package.json中的相关AI音乐生成库),检查其是否支持隐私声明 - 若库未提供隐私清单,使用
patch-package给依赖打补丁:- 在依赖的
ios目录下创建PrivacyInfo.xcprivacy文件(内容参考步骤4的XML示例) - 执行
npx patch-package [依赖包名]生成补丁,确保每次npm install后配置不会被覆盖
- 在依赖的
- 同时联系库开发者更新版本,添加官方隐私清单
4. 手动添加PrivacyInfo.xcprivacy文件
如果Expo自动配置失效,可手动创建隐私清单文件:
- 若为managed workflow,先执行
expo prebuild生成iOS目录 - 在
ios/目录下创建PrivacyInfo.xcprivacy,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>NSPrivacyAccessedAPITypes</key> <array> <dict> <key>NSPrivacyAccessedAPIType</key> <string>NSPrivacyAccessedAPICategoryDiskSpace</string> <key>NSPrivacyAccessedAPITypeReasons</key> <array><string>CA92.1</string></array> </dict> <dict> <key>NSPrivacyAccessedAPIType</key> <string>NSPrivacyAccessedAPICategoryFileTimestamp</string> <key>NSPrivacyAccessedAPITypeReasons</key> <array><string>C617.1</string></array> </dict> <dict> <key>NSPrivacyAccessedAPIType</key> <string>NSPrivacyAccessedAPICategorySystemBootTime</string> <key>NSPrivacyAccessedAPITypeReasons</key> <array><string>35F9.1</string></array> </dict> <dict> <key>NSPrivacyAccessedAPIType</key> <string>NSPrivacyAccessedAPICategoryUserDefaults</string> <key>NSPrivacyAccessedAPITypeReasons</key> <array><string>CA19.1</string><string>CA19.2</string></array> </dict> </array> </dict> </plist>
- 确保该文件被Expo打包包含,可通过
expo-build-properties插件配置资源文件路径
5. 清理缓存并重新构建
缓存可能导致配置不生效,执行以下操作:
expo r -c清理Expo缓存rm -rf node_modules && npm install重新安装依赖- 若已prebuild,删除
ios/目录后重新执行expo prebuild - 用
eas build --platform ios --profile production重新构建生产包
6. 验证隐私清单是否打包成功
构建完成后,下载归档文件,解压找到.app文件,右键「显示包内容」,确认存在PrivacyInfo.xcprivacy且内容与配置一致。
内容的提问来源于stack exchange,提问作者Nooblantis District
相关产品推荐
相关产品推荐

