You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FamilyControls和DeviceActivity开发屏幕时间应用:eventDidReachThreshold不触发

问题排查与解决方案

针对你使用FamilyControls和DeviceActivity开发屏幕时间应用时eventDidReachThreshold未触发的问题,从配置、代码和系统层面整理以下排查点:

1. 修复ManagedSettingsStore的App Group配置

你的DeviceActivityMonitorExtension中初始化ManagedSettingsStore时未指定共享的App Group,导致扩展和主应用无法同步屏蔽规则,这是屏蔽功能不生效的核心原因。修改代码:

// 扩展中指定App Group
let store = ManagedSettingsStore(appGroup: "group.com.aung.Cooked")

主应用中初始化ManagedSettingsStore时同样需要指定该App Group,确保数据共享。

2. 验证DeviceActivityMonitorExtension的配置

  • 检查扩展的Info.plist,确认NSExtensionPrincipalClass的值为$(PRODUCT_MODULE_NAME).DeviceActivityMonitorExtension,确保系统能正确识别扩展类。
  • 扩展的Deployment Target必须与主应用一致,不能低于主应用的iOS版本。

3. 调整DeviceActivitySchedule的时间区间

你当前设置的intervalStart和intervalEnd都是午夜0点的组件,可能被系统判定为无效的时间范围。修改为覆盖全天的有效区间:

// 替换原startComponents和endComponents的生成逻辑
let startComponents = DateComponents(hour: 0, minute: 0, second: 0)
let endComponents = DateComponents(hour: 23, minute: 59, second: 59)

或者直接使用DeviceActivitySchedule.daily简化配置:

let schedule = DeviceActivitySchedule.daily(from: startComponents, to: endComponents)

4. 缩小阈值快速验证

将测试阈值设为1分钟,快速验证事件是否触发,排除长时间等待带来的误差:

let threshold = DateComponents(minute: 1)

5. 排查iOS 26.5 Beta的系统问题

由于你使用的是Beta版本,存在API不稳定的可能性:

  • 在iOS 25正式版环境下测试相同代码,若问题消失则说明是Beta系统的bug。
  • 查看Apple Beta Release Notes,确认是否有已知的DeviceActivityEvent触发问题。

6. 确认事件与活动名称的匹配

在eventDidReachThreshold中添加日志,打印event.rawValue和activity.rawValue,确认与启动监控时设置的名称一致:

override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) {
    super.eventDidReachThreshold(event, activity: activity)
    print("Event triggered: \(event.rawValue), Activity: \(activity.rawValue)")
    let store = ManagedSettingsStore(appGroup: "group.com.aung.Cooked")
    store.shield.applicationCategories = .all()
}

内容的提问来源于stack exchange,提问作者jj win

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.03 02:13:10