0

问题

自设置回调日期以来至少经过 X 时间时,我需要获得回调。

示例 1:这会很好用,但是可以通过将日期设置为早于现在的正确时间来触发块的执行:

let responseDate = Date().advanced(by: 60) // 1 min
OperationQueue.current.schedule(after: .init(responseDate), {
print("the time is now!") // possible to set the current date 1 min before
}

另一方面,从这个答案中获取当前正常运行时间的解决方案效果很好,但它需要不断运行计时器来检查我们是否接近最新状态。

是否可以将这两种方法结合起来并以某种方式“附加”一个回调KERN_BOOTTIME,以便操作系统在boottime达到某个值时调用我的方法?

我也在寻找满足两个标准的替代工程解决方案:

  1. 应该不可能通过将设备日期重置为过去的某个任意值来触发回调
  2. 如果设备已进入睡眠状态(例如通过按下开/关侧按钮),时钟仍应“滴答作响”,以便在应用程序在后台运行时回调该方法。

更多细节:

  • 后台/应用程序终止超出范围
  • 要点是通过在设置中向后切换日期来防止绕过。
4

0 回答 0