• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 22:42:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

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

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

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

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

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

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

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

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

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



Best Answer-推荐答案


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

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

然后,当他们在设备上取消订阅时,您可以更新 Subscription 记录,他们的所有设备都会收到更改通知。然后,该应用会根据用户可用的 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap