iOS日历监控在后台 - 它是如何完成的?

时间:2013-07-19 17:59:08

标签: ios calendar notifications background-process

我正在研究如何在活动即将开始时向我们的应用添加通知。其他只是日历应用程序提供此功能,但我的研究让我感到困惑的是他们如何实现这一目标。

根据Apple文档: 对于需要执行更多执行时间的任务,您必须请求特定权限才能在后台运行它们而不会被暂停。在iOS中,只允许特定的应用类型在后台运行:

  • 在后台播放用户可听内容的应用, 例如音乐播放器应用
  • 随时向用户通知其位置信息的应用,例如 导航应用
  • 支持互联网协议语音(VoIP)的应用
  • 需要下载和处理新内容的报亭应用
  • 从外部附件接收定期更新的应用

好吧,日历应用程序不是这些。如果我安排我的应用程序的本地通知定期唤醒并检查日历,这是不够的,因为我已经完成了阅读。使用位置监控选项是不够的 - 如果我的用户整天坐在他/她的办公室怎么办?

显然,可以在手机旁边的其他来源添加/删除日历事件,因此在我的应用启动时设置一堆通知不是解决方案。

日历应用程序如何完成事件前通知?我有来自App Store的多个日历应用程序,他们这样做,所以我知道可以完成。我的应用程序也需要被App Store接受,所以我不能伪造VoIP作为解决方案。

其他信息:经过更多研究后,我看到这样做的应用程序在关闭(duh)时不会更新,但它们会进行一些后台更新。我仍然不清楚如何保持我的后台进程很长时间(例如一夜之间)。

1 个答案:

答案 0 :(得分:5)

检查这个答案。您可以订阅EKEventStoreChangedNotification以获取日历中任何更改的通知。 https://stackoverflow.com/a/12324363/1187485