CKFetchNotificationChangesOperation 的 previousServerChangeToken 是用户特定的还是数据库特定的?

Are previousServerChangeToken for CKFetchNotificationChangesOperation user specific or database specific?

对于 public CloudKit 数据库,有谁知道在初始化 CKFetchNotificationChangesOperation 时用于 previousServerChangeToken 的数据令牌是否是:

1) 用户特定:数据令牌只能由一个 Apple ID 使用

2) 数据库特定:不同的 Apple ID 可以使用相同的令牌来指定 CKNotifications 数据库中的相同状态

我想知道,因为我有一些预加载的本地数据可能需要在首次启动时更新,而且我不确定我是否应该使用 CKFetchNotificationChangesOperation(初始令牌保存在主包中)或只是获取 public 数据库中的所有记录并检查本地数据。

通知更改标记是每个用户的值,它们不能用于假设有关 public 数据库中记录状态的任何信息。

听起来您正在尝试使用 public 数据库来存储更新应用程序包中默认文件的文件。

一种方法是在您的所有此类记录中存储 version 属性。当一个应用程序检查它是否需要任何更新时,它可以 运行 a CKQuery 用于所有版本高于本地保存的记录。然后,您的应用程序可以下载所有这些记录并使用它们,而不是存储在其包中的数据。

您需要的是 CKFetchRecordChangesOperation,但这仅适用于用户私有 cloudkit 数据库中的 non-default 区域。 此操作将为您提供记录区域的所有更改、删除的记录和更新(仅更改的属性)。