我正在尝试根据测试数组中的成员资格来设置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管理控制台添加或更改记录进行测试时,我从未在设备上收到通知。
我能够接收其他类型谓词订阅的通知(我用一个简单的真正谓词进行了测试,并且测试了一个字符串字段的相等性),所以我知道我已经正确设置了通知代码。 / p>
我还验证了上面列出的谓词在fetch records查询中使用时有效,所以我知道谓词是为CloudKit中的记录类型正确设置的。
是否有人能够通过测试数组成员身份的谓词来获取订阅通知?
答案 0 :(得分:0)
在玩完之后,我发现除非我设置notificationInfo.alertbody
,否则订阅永远不会被解雇。
首先尝试将其设置为"Test"
,然后将其设置为""
。我发现它在我将其设置为空白字符串后继续工作(虽然我没有尝试将其设置为空白以开始),并且作为空白字符串,它不会显示通知,但我的处理程序仍然被召唤,这就是我所追求的。
使用iOS 8.1.1 / Xcode 6.1.1