我正在尝试在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>
有什么想法吗?
答案 0 :(得分:0)
您使用alertBody
或使用alertLocalizationKey
和alertLocalizationArgs
。你不要混淆两者。
目前还不清楚你想要的信息是什么。在任何情况下,分配@[ @"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。