从服务器收听iCal事件更改

我正在构build日历应用程序的服务器端。 客户端只有iOS。 原来的计划是应用程序会知道iCal事件的变化,然后告诉服务器。 但是这可能是一个提醒问题(通过parsing推送)。 例如,如果事件推进提醒应该提前。

是否可以从服务器端通知iCal事件? 例如,当用户创build/更新/删除一个iCal事件时,我想从服务器上知道这个信息。 这可能吗? 还是一切都需要通过运行的本地应用程序来完成?

我的服务器目前在parse.com上。 但是如果需要,我可以使用一个单独的服务器,如NodeJS。

由于iCal依赖于用户/设备,除非用户使用iCloud同步了他的日历活动。 而在第二种情况下,用户激活了日历事件的同步,最终用户将他的icloud细节分享给其他服务器是完全不安全的。

如何在后端创build1个API,这将更新/删除日历事件的应用程序请求,并将更新后台进程中的Parse通知事件。 为此,您还可以在NodeJS或任何其他技术堆栈中编写定制的Parse apis。

在应用程序中,您可以使用Event Kit将事件与iCal同步:

https://developer.apple.com/library/mac/documentation/DataManagement/Conceptual/EventKitProgGuide/ReadingAndWritingEvents.html#//apple_ref/doc/uid/TP40004775-SW1

首先,你需要能够让iOS唤醒你的应用程序在后台运行,这需要将你的应用程序分类为苹果后台执行的一种模式,我认为“后台获取”适合你的情况,然后在您的application:performFetchWithCompletionHandler:您可以检查日历数据库中是否有更改的事件,并对服务器执行必要的更新。

我认为这是你最好的select: https : //stackoverflow.com/a/23997912/1967872

在你的答案中提到的storeChanged:方法的实现中,你应该遍历所有的事件,检测任何改变并提交给服务器。

我不知道这是否可能,但我认为这很难,因为我还没有find任何图书馆/任何function,苹果是这样的。 但我正在把一个可能对你有帮助的链接。 请检查一下。

http://kb.kerio.com/product/kerio-connect/os-x/support-for-apple-ical-calendar-using-the-caldav-standard-1494.html