CloudKit通知

时间:2014-12-09 04:45:25

标签: ios apple-push-notifications cloudkit

我可能会遗漏一些明显的东西。

如何创建一个CloudKit通知,其中包含有关您收到通知的CKRecord的详细信息? (即不仅仅是一个通用的“New Item Created!”,而是一个带有记录标题的通知,例如“Jill and Jessica的生日派对!”)

是否有正确的方法来为每个新记录更改创建一个包含新notification.alertBody的新订阅?这没有任何意义。

留下选项queryNotification.recordID从CloudKit(或我的本地商店)中提取数据并以某种方式将其添加到通知中?添加或更改已通知通知值的方法是什么?我错过了什么?

更新:根据Edwin的建议,这里是一段代码片段,但它不起作用。

let notification = CKNotificationInfo()
notification.alertBody = "Added: %@" as NSString
notification.alertLocalizationArgs = ["name"]

1 个答案:

答案 0 :(得分:10)

只需填写CKNotificationInfo对象的.alertLocalizationArgs

即可

.alertLocalizationArgs的文档说:

  

使用此属性是可选的。该属性包含一个数组   NSString对象,每个对象对应一个记录的字段   触发了推送通知。这些名称用于检索   来自记录的相应值。然后使用这些值   替换alertBody或中的任何替换变量   alertLocalizationKey字符串。值本身必须是NSString,   NSNumber或NSDate对象。不要使用其他值指定键。   长度大于100个字符的字符串值可能是   添加到推送通知时被截断。

     

如果您使用%@作为替换变量,那么这些变量是   取而代之的是按顺序遍历数组。如果你使用的变量   表单%n $ @,其中n是整数,n表示索引(从   1)要使用的数组中的项目。因此,数组中的第一项   替换变量%1 $ @,第二项替换变量   %2 $ @,依此类推。您可以使用索引替换变量进行更改   结果字符串中的项目顺序,这可能是必要的   当您本地化应用程序的消息时。

以下是我如何使用它的2个样本:

            notificationInfo.alertBody = "%1$@ : %2$@"
            notificationInfo.alertLocalizationArgs = ["FromName", "Text"]

第二个样本:

            notificationInfo.alertLocalizationKey = "News: %1$@"
            notificationInfo.alertLocalizationArgs = ["Subject"]

你有"新闻:%1 $ @"作为Localizable.strings文件中的键

更新:您现在看起来需要使用.alertLocalizationKey。所以第一个样本不再起作用了。