CloudKit:使用通知在多个设备之间保持同步更改

时间:2015-12-03 20:07:35

标签: ios push-notification cloudkit

我正在编写应用程序并使用CloudKit。该应用程序将其数据存储在公共数据库中。我创建了一个本地缓存,以便即使网络不可用,我的应用程序也可以正常运行。我正在使用CKSubscriptions以及生成的推送通知来保持云中的更改同步。所有这一切都运作良好。

现在,如果用户有多个设备并且在所有这些设备上运行我的应用程序,那么我就不能再将通知标记为“已读”(使用CKMarkNotificationsReadOperation),因为我不知道所有设备何时处理过它们。如果其中一个设备在发生更改时处于脱机状态,则尤其如此。如果我将它们标记为已读,那么当其他设备检查新通知时(使用CKFetchNotificationChangesOperation),他们将看不到它们,并且它们的本地缓存将过期。

我目前的解决方案是将所有通知保留为“未读”状态,并依赖CKServerChangeToken中的CKFetchNotificationChangesOperation,以便每个设备仅抓取自该设备上次检查以来发生的通知。这很有效。

但是,在我看来,由于我没有将任何通知标记为“已读”,因此它们将继续堆积在服务器上。也许这不是什么大不了的事,但是他们会占用空间,我没有办法摆脱它们。随着时间的推移,这似乎可能是一个问题。

有没有人以类似的方式使用订阅/通知,并提出了不同的方法?此外,欢迎任何有关我的方法的反馈。

1 个答案:

答案 0 :(得分:2)

无论读取状态如何,服务器都将删除旧通知。