Mat*_* W. 2 ios cloudkit cknotification
我需要一种方法将CKQueryNotification连接到CKRecord或CKSubscription,这样我就可以在多种记录类型上接收更新/插入/删除.我成功收到CKNotifications,这是有效载荷:
{
ck = {
ce = 2;
cid = "<my cloud container id>";
nid = "<unknown guid>";
qry = {
dbs = 2;
fo = 1;
rid = "<the record id>";
sid = "<THIS IS THE SUBSCRIPTION ID>";
zid = "_defaultZone";
zoid = "_defaultOwner";
};
};
}
Run Code Online (Sandbox Code Playgroud)
我可以通过通知有效负载获取订阅ID,我可以将订阅ID绑定到知道记录类型的本地缓存,但我想使用CKFetchNotificationChangesOperation来检索未读通知,此时我只有一个CKQueryNotification对象.
CKQueryNotification对象只有一个CKRecordID,据我所知,我无法从CKRecordID获得CKRecord.我可以在我的容器中对我的所有CKRecord-> recordType执行查询,但这似乎不对.
任何帮助表示赞赏!
如果您收到推送通知,那么您应该看看是否可以将其转换为CKQueryNotification.实际上你应该调用 - [CKDatabase fetchRecordWithID:completionHandler:]来获取完整的记录.然后,您可以使用.recordType查看它是什么类型的记录.
当您对同一记录类型有多个订阅时,您只会遇到问题.您可以通过检查对象是否符合您用于该订阅的谓词来解决此问题.请参阅predicate.evaluateWithObject方法.如果您有CKReference的谓词,则不能使用此方法.
如果你想要一个这样的工作样本,那么你可以看看:https: //github.com/evermeer/EVCloudKitDao 其他一些很好的功能,如从CKRecord自动解析和在结果设备上缓存.
| 归档时间: |
|
| 查看次数: |
743 次 |
| 最近记录: |