Ios 如何确定何时删除CloudKit订阅?
我正在iOS应用程序中使用CloudKit 在我的应用程序中,每当用户修改某些数据时,我都会更新CloudKit私有数据库,以便用户的其他设备也可以得到更新 此同步机制可由用户启用/禁用 当用户启用同步时,我创建订阅并将本地数据推送到CloudKit 如果用户已登录到其他设备,他们将按照预期收到有关私有数据库更改的远程通知 应用程序显示一个Ios 如何确定何时删除CloudKit订阅?,ios,apple-push-notifications,cloudkit,Ios,Apple Push Notifications,Cloudkit,我正在iOS应用程序中使用CloudKit 在我的应用程序中,每当用户修改某些数据时,我都会更新CloudKit私有数据库,以便用户的其他设备也可以得到更新 此同步机制可由用户启用/禁用 当用户启用同步时,我创建订阅并将本地数据推送到CloudKit 如果用户已登录到其他设备,他们将按照预期收到有关私有数据库更改的远程通知 应用程序显示一个ui开关,供用户启用/禁用同步 让我们假设用户有两个设备DeviceA和DeviceB,它们显示通过将UISwitch.isOn设置为true已启用同步 如果
ui开关
,供用户启用/禁用同步
让我们假设用户有两个设备DeviceA
和DeviceB
,它们显示通过将UISwitch.isOn
设置为true已启用同步
如果用户在DeviceA
上禁用同步,则订阅将被删除,并且在DeviceA
上所做的更改不会按预期触发对DeviceB
的远程通知
但是DeviceB
仍然显示同步已启用
有没有办法知道订阅何时被删除
我知道。我可以定期调用
ckfetchsubscriptions操作
,了解订阅情况。有更好的方法吗?这是一个非常好的问题,也是我遇到的问题。你说得对。了解订阅状态的唯一方法是查询CKFetchSubscriptionsOperation
提供的内容
一种可能的解决方法是创建一个名为Subscription
的recordType
,并将用户当前使用的subscriptionID
保存为常规CloudKit记录(只需在CKRecord
上使用字符串
属性)
然后,当他们在设备上取消订阅时,您可以更新订阅
记录,他们的所有设备都将收到更改通知。然后,应用程序将根据用户可用的订阅ID更新实际订阅
因此,这里有一个潜在的工作流程:
DeviceA
取消订阅subscription1
DeviceA
从Subscription
表中删除subscriptionRecord1
DeviceA
使用CKModifySubscriptionsOperation()
删除实际的subscription1
订阅DeviceB
收到已删除subscriptionRecord1
的通知,并将同步UISwitch
翻转为关闭(我假定您正在使用本地持久性方法保存这些开关的状态,如数据库或UserDefault
)