我的动态CKNotification没有注册

时间:2016-08-21 18:38:31

标签: ios objective-c cloudkit

我正在尝试在Objective-C中为iOS设置动态CKNotification,但它未能注册通知。

这是我的代码:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"notify == %@",userentry2.text];
CKSubscription *newRecordSub = [[CKSubscription alloc] initWithRecordType:savefolder predicate:predicate options: CKSubscriptionOptionsFiresOnRecordUpdate | CKSubscriptionOptionsFiresOnRecordCreation];
CKNotificationInfo *noteInfo = [CKNotificationInfo new];
noteInfo.alertBody=@"%@";
noteInfo.alertLocalizationArgs = [NSArray arrayWithObject:@"message"];
noteInfo.shouldBadge = NO;
noteInfo.soundName = UILocalNotificationDefaultSoundName;
newRecordSub.notificationInfo = noteInfo;
CKContainer *container = [CKContainer defaultContainer];
CKDatabase *publicDatabase = [container publicCloudDatabase];
[publicDatabase saveSubscription:newRecordSub completionHandler:^(CKSubscription *subscription, NSError *error) {
    if(error){
        NSLog(@"didn't register new notif");
    }
    else{
        NSLog(@"registered new notif");
    }
}];

如果我之前只有警报正文,没有alertLocalizationArgs,它会完美注册,但现在我已经添加了alertLocalizationArgs功能,但它不会注册。< / p>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您使用alertBody或使用alertLocalizationKeyalertLocalizationArgs。你不要混淆两者。

目前还不清楚你想要的信息是什么。在任何情况下,分配@[ @"message" ]毫无意义。

要么:

noteInfo.alertBody = @"Some message you create";

或做:

noteInfo.alertLocalizationKey = @"Some Key in your Localized.strings file";
noteInfo.alertLocalizationArgs = @[ @"argument value 1", @"argument value 2" ];

其中本地化参数是取代的值,就像在与本地化关键字关联的任何值中使用stringWithFormat:一样。仅当局部值需要1个或多个参数时才使用args。