Ios CloudKit通知

Ios CloudKit通知,ios,apple-push-notifications,cloudkit,Ios,Apple Push Notifications,Cloudkit,我可能错过了一些明显的东西 如何创建一个CloudKit通知,其中包含通知您的CKRecord的详细信息?(也就是说,不仅仅是一个通用的“New Item Created!”,而是一个带有记录标题的通知,例如,“Jill和Jessica的生日派对!”) 这样做的正确方法是为每一个新记录更改创建一个具有新notification.alertBody的新订阅吗?那没有任何意义 这样,queryNotification.recordID选项就可以从CloudKit(或我的本地存储)中提取数据,并以某种

我可能错过了一些明显的东西

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

这样做的正确方法是为每一个新记录更改创建一个具有新notification.alertBody的新订阅吗?那没有任何意义

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

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

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

只需填写CKNotificationInfo对象的.alertLocalizationArgs

.alertLocalizationArgs的文档说明:

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

如果将%@用于替换变量,则这些变量是 替换为按顺序遍历阵列。如果使用 形式%n$@,其中n是一个整数,n表示索引(从 1) 数组中要使用的项的名称。因此,数组中的第一项 替换变量%1$@,第二项替换变量 %2$@,依此类推。您可以使用索引替换变量来更改 结果字符串中项目的顺序,这可能是必需的 当您本地化应用程序的消息时

以下是我如何使用它的两个示例:

            notificationInfo.alertBody = "%1$@ : %2$@"
            notificationInfo.alertLocalizationArgs = ["FromName", "Text"]
第二个样本:

            notificationInfo.alertLocalizationKey = "News: %1$@"
            notificationInfo.alertLocalizationArgs = ["Subject"]
其中“新闻:%1$@”作为Localizable.strings文件中的键


更新:看起来您现在需要使用.alertLocalizationKey。因此,第一个样本不再有效

嗯。我已经试过了,但似乎没法用。在我应该用于swift代码的字符串中,除了%@之外,还有其他id吗?我的通知只是重复字符串“Added:%@”,并不会替换为我的记录数据。如果您想查看其运行的完整代码,请查看:确保先删除旧订阅,然后再创建具有不同设置的新订阅,这似乎是问题所在。我删除了所有订阅,现在正在工作。谢谢你的第一个例子只是alertBody对我不起作用。但是,当我添加可本地化文件并使用警报本地化键时,它就起作用了。