gpt4 book ai didi

ios - CKServerChangeToken 的 "scope"是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:25:52 24 4
gpt4 key购买 nike

https://developer.apple.com/reference/cloudkit/ckserverchangetoken 中所述,CloudKit 服务器返回一个更改 token 作为 CKFetchRecordZoneChangesOperation 回调响应的一部分。对于哪一组后续记录提取,我应该在提取调用中包含给定的更改标记?

  • 只获取到我们从中获取的区域?
  • 或者它是否适用于对该区域所在的数据库的任何提取?或者数据库所在的整个容器?<​​/li>
  • 应用附加信息呢? (应用程序扩展与主应用程序具有相同的 iCloud 用户,但具有不同的“用户”,由 fetchUserRecordIDWithCompletionHandler: 返回,至少在我的测试中)在来自的获取调用中从主应用程序提供更改 token 是否合适,比如说,消息应用程序扩展?我想不会,但希望有一个记录在案的官方答复。

最佳答案

我也发现 CKServerChangeToken 的范围有点不清楚。但是,在查看文档后,CKFetchDatabaseChangesOperationCKFetchRecordZoneChangesOperation 都提供和管理它们自己的服务器更改 token 。

如果您决定遵循 Dave Browning 在他的 2017 WWDC talk 中概述的 CloudKit 工作流程,这将特别有用。获取更改时(大约 8 分钟)。

推荐的方法是:

1) 使用 CKFetchDatabaseChangesOperation 获取数据库的更改。通过 changeTokenUpdatedBlock 收到更新的 token 后,将其保留在本地。此 token 的“作用域”为添加了操作的私有(private)或共享 CKDatabase。公共(public)数据库不提供更改 token 。

2) 如果您在之前的操作中通过 recordZoneWithIDChangedBlock 接收到区域 ID,这表明存在您可以使用 CKFetchRecordZoneChangesOperation 获取更改的区域。此操作通过其相当繁琐的初始化参数接收其自己唯一的服务器更改 token :CKFetchRecordZoneChangesOperation.ZoneConfiguration。这是针对此特定 CKRecordZone 的“范围”。因此,同样,当通过 recordZoneChangeTokensUpdatedBlock 接收更新的 token 时,它需要在本地持久化(可能使用与其相关的 key CKRecordZone.ID)。

这里的好处是它可能最大限度地减少网络调用的数量。如果数据库未报告任何更改的区域 ID,首先获取数据库更改可防止对每个记录区域进行调用。

这是一个 code sample来自运行此工作流程的 CloudKit 团队。不可否认,一些 API 此后发生了变化,并且评论没有明确说明服务器更改 token 的“范围”。

关于ios - CKServerChangeToken 的 "scope"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41901601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com