集成DeviceActivityReport扩展的App无法安装或上传TestFlight该如何解决?
解决DeviceActivityReport扩展上传TestFlight及安装错误的方案
核心原因
com.apple.deviceactivityui.report-extension类型的扩展不允许配置NSExtensionMainStoryboard或NSExtensionPrincipalClass,它依赖系统提供的标准化UI模板,仅需配置必要的扩展属性即可。上传TestFlight的错误通常源于扩展Info.plist的关键配置缺失。
具体解决步骤
- 彻底移除扩展目标Info.plist中的
NSExtensionMainStoryboard和NSExtensionPrincipalClass键,确保这两个配置项完全不存在。 - 修正扩展的Info.plist中
NSExtension字典的配置,示例如下:<key>NSExtension</key> <dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.deviceactivityui.report-extension</string> <key>NSExtensionAttributes</key> <dict> <!-- 允许调用该扩展的主App Bundle ID --> <key>DeviceActivityReportExtensionAllowedBundleIdentifiers</key> <array> <string>com.your.mainapp.bundleid</string> </array> <!-- 可选:指定支持的报告类型,如屏幕使用时间等 --> <key>DeviceActivityReportExtensionSupportedReportTypes</key> <array> <string>com.apple.deviceactivity.type.screentime</string> </array> </dict> </dict> - 检查主App的Info.plist配置:
- 确认已添加
NSFamilyControlsUsageDescription键,并填写明确的权限使用说明(家庭控制类App必填)。 - 确保主App的Bundle ID与扩展配置中
DeviceActivityReportExtensionAllowedBundleIdentifiers的内容完全一致。
- 确认已添加
- 清理项目后重新构建归档:
- 在Xcode中选择
Product->Clean Build Folder。 - 删除DerivedData目录(路径通常为
~/Library/Developer/Xcode/DerivedData)。 - 重新生成归档并上传至TestFlight。
- 在Xcode中选择
额外说明
若之前上传TestFlight的错误提示为扩展配置不完整,按上述步骤修正即可解决;添加UI入口键导致的安装错误,本质是违反了该扩展点的系统约束,移除后就能消除冲突。
内容的提问来源于stack exchange,提问作者Artak
相关产品推荐
相关产品推荐

