gpt4 book ai didi

ios - 如何找出 CloudKit 订阅何时被删除?

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

我在我的 iOS 应用程序中使用 CloudKit。

在我的应用程序中,每当用户修改某些数据时,我都会更新 CloudKit 私有(private)数据库,以便用户的其他设备也可以得到更新。

用户可以启用/禁用此同步机制。

当用户启用同步时,我创建一个订阅并将本地数据推送到 CloudKit。

如果用户已登录到其他设备,他们将开始按预期收到有关私有(private)数据库更改的远程通知。

应用程序显示一个 UISwitch 供用户启用/禁用同步。

假设用户有 2 台设备 DeviceADeviceB,这表明通过将 UISwitch.isOn 设置为 true 已启用同步。

如果用户在 DeviceA 上禁用同步,则订阅将被删除并且在 DeviceA 上所做的更改不会触发对 DeviceB 的远程通知,因为预期。

但是 DeviceB 仍然显示同步已启用。

有没有办法知道订阅何时被删除?

我知道 CKFetchSubscriptionsOperation .我可以定期调用 CKFetchSubscriptionsOperation 来了解订阅。有更好的方法吗?

最佳答案

这是一个很好的问题,也是我遇到的问题。你是对的。了解订阅状态的唯一方法是使用 CKFetchSubscriptionsOperation 查询可用的内容。

一种可能的解决方法是创建一个名为 SubscriptionrecordType 并将用户当前使用的 subscriptionID 保存为 常规 CloudKit 记录(只需在 CKRecord 上使用 String 属性)。

然后,当他们在设备上取消订阅时,您可以更新订阅 记录,他们的所有设备都会收到有关更改的通知。然后,该应用会根据用户可用的 subscriptionID 更新实际订阅。

所以这是一个潜在的工作流程:

  1. DeviceA 取消订阅 subscription1
  2. DeviceASubscription 表中删除 subscriptionRecord1
  3. DeviceA 使用 CKModifySubscriptionsOperation() 删除实际的 subscription1 订阅。
  4. DeviceB 收到 subscriptionRecord1 已删除的通知,并将同步 UISwitch 翻转为关闭(我假设您正在保存这些开关的状态本地持久性方法,如数据库或 UserDefaults)。

希望对您有所帮助。如果您有任何问题,请告诉我。

关于ios - 如何找出 CloudKit 订阅何时被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55741178/

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