我可能会遗漏一些明显的东西。
如何创建一个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"]
答案 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。所以第一个样本不再起作用了。