DeviceActivityReport无法向主应用展示报告数据问题求助
以下是几个排查和解决该问题的关键点:
确认权限请求的实际结果:别只调用
AuthorizationCenter.shared.requestAuthorization(for: .individual),一定要检查授权状态。在展示报告前,用AuthorizationCenter.shared.authorizationStatus(for: .individual)确认返回值为.authorized。另外,权限请求是异步操作,必须等用户授权完成后再初始化DeviceActivityReport,避免请求未返回就急于展示视图。补全报告扩展的Info.plist配置:你当前的配置仅添加了
com.apple.developer.family-controls,但报告扩展还需要基础的扩展点配置。要确保Info.plist里包含NSExtension字典,指定正确的扩展类型和主类:
<key>NSExtension</key> <dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.deviceactivity.report-extension</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).DeviceActivityReportExtension</string> </dict>
这个配置是系统识别报告扩展的必要条件,缺失的话即使权限开启也会导致数据库访问失败。
确认权限范围匹配:
.individual权限仅能监控当前用户的设备活动,如果你的设备加入了家庭组,或实际需要监控家庭其他成员,需换成请求.family权限。如果是个人使用,检查系统设置中是否真的给了app对应权限(路径:设置→屏幕使用时间→内容和隐私访问限制→你的app)。重置权限缓存:有时候系统权限缓存会出现异常,试试重启设备,或删除app后重新安装并重新授权权限,这类玄学问题常能通过重启解决。
检查DeviceActivityFilter的合法性:若filter的时间范围、应用/类别配置有误,也可能触发看似权限问题的报错。确保filter的
interval是有效时间区间,activities里的规则无冲突或非法值。
内容的提问来源于stack exchange,提问作者Imran0001

