【发布时间】:2014-11-07 11:08:57
【问题描述】:
我正在尝试根据数组中的测试成员资格设置 CloudKit 订阅。
我用来创建订阅的代码如下:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"users CONTAINS %@", userID];
CKSubscription *itemSubscription = [[CKSubscription alloc] initWithRecordType:@"foo"
predicate:predicate
options:CKSubscriptionOptionsFiresOnRecordCreation|CKSubscriptionOptionsFiresOnRecordUpdate];
CKNotificationInfo *notificationInfo = [[CKNotificationInfo alloc] init];
[notificationInfo setAlertLocalizationKey:@"Record notification"];
[notificationInfo setShouldBadge:YES];
[itemSubscription setNotificationInfo:notificationInfo];
[database saveSubscription:itemSubscription completionHandler:^(CKSubscription *subscription, NSError *error) {
NSLog(@"Error: %@, Subscription: %@", error, subscription);
}];
日志显示订阅已成功创建,但是当我通过 CloudKit 管理控制台添加或更改记录进行测试时,我从未在设备上收到通知。
我能够使用其他类型的谓词接收订阅通知(我已经使用简单的真实谓词进行了测试,并且测试了字符串字段的相等性),所以我知道我的通知代码设置正确。
我还验证了上面列出的谓词在用于获取记录查询时有效,因此我知道该谓词已针对我在 CloudKit 中的记录类型正确设置。
有没有人能够通过测试数组成员资格的谓词获得订阅通知?
【问题讨论】:
-
您是否看到 CloudKit 仪表板中列出的订阅?
标签: ios objective-c nspredicate icloud cloudkit