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

Posted

技术标签:

【中文标题】iOS 日历在后台监控 - 它是如何完成的?【英文标题】:iOS Calendar monitoring in the background - how is it done? 【发布时间】:2013-07-19 17:59:08 【问题描述】:

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

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

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

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

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

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

附加信息:经过更多研究,我看到的应用程序在关闭时不会更新(呃),但它们会进行一些后台更新。我仍然不清楚如何让我的后台进程长时间运行(例如一夜之间)。

【问题讨论】:

你读过这个吗?我相信它回答了你的问题developer.apple.com/library/ios/#documentation/… 是的,我已经阅读了,但它没有解决如何监控日历中的变化。仅在打开应用程序时设置一堆本地通知并不能满足对日历中的更改做出反应并为用户提供事件即将开始的通知的需要。 如果您只想提醒用户注意事件,并且日历正在远程存储和更新,那么对尚未同步到 iOS 的事件使用推送通知有什么问题应用的日历? 如何设置推送通知?我的应用程序脱离了 iOS 日历中的内容。如果有人通过其他机制(例如 Google 日历或 Outlook/Exchange)将事件添加到日历中,我的应用程序不会知道他们,除非它有机会监控日历。我没有将事件推送到日历的服务器,只有 iOS 设备上的应用程序读取用户的日历。 你可以通过后台获取来做到这一点。This answer may helps. 【参考方案1】:

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

【讨论】:

以上是关于iOS 日历在后台监控 - 它是如何完成的?的主要内容,如果未能解决你的问题,请参考以下文章

iOS9中如何在日历App中创建一个任意时间之前开始的提醒

后台模式下的 iOS 区域监控

iOS进阶 - iOS如何监控崩溃

iOS进阶 - iOS如何监控崩溃

iOS 后台状态监控通话状态

iOS 后台模式下的 GPS 监控