使用 iOS - 无需任何网络连接,
Alarmy App 能够在未来的某个时间运行代码——即使 App 完全关闭。
他们是怎么做到的?
为了进一步解释,这里是我对 Alarmy 如何发出无尽警报的想法:
- Alarmy 可以在未来的任何时间设置闹钟。
- 该应用程序已完全关闭
- 当警报时刻发生时,会运行一些代码,使用
calendarComponentSet = [.second]
and设置本地通知repeat = true
(这样通知每分钟无休止地重复) - 它进一步设置了 20 个提醒本地通知,彼此间隔 3 秒,再次使用
calendarComponentSet = [.second]
andrepeat = true
(这样一分钟就会有 20 多个通知填充 - 您可以看到当警报通知开始时,您会观察到每 3 秒计数一次NotificationCenter 上升。计数上升到 19 - 没有更高。之后重复开始,每 20 个通知重复一次。20 个包每分钟重复一次,您可以避免达到 64-max 通知限制) - 一切都没有互联网,也没有用户权限(通知权限除外)
现在的大问题:
在未来的某个特定时刻,您的应用程序中没有运行某些代码,您怎么会导致这些代码运行?
这个时刻被一些小代码使用,这些代码设置了 20 个重复通知。但是如何在完全封闭的应用程序中触发该代码?到目前为止,我只看到了通知横幅上的用户交互如何导致代码执行。但是如果用户不按任何横幅,它是如何工作的呢?