CloudKit通知

我可能会在这里丢失一些明显的东西

如何创build一个CloudKit通知,并提供有关您正在被通知的CKRecord的详细信息? (即不只是一个通用的“创build新项目”,而是一个通知,例如“吉尔和杰西卡的生日派对!”)

是否正确的方法来创build一个新的订阅与新的notification.alertBody为每个新的logging更改? 这没有任何意义。

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

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

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

只需填写CKNotificationInfo对象的.alertLocalizationArgs即可

.alertLocalizationArgs的文档说:

使用这个属性是可选的。 该属性包含一个NSString对象数组,每个对象都对应于触发推送通知的logging的一个字段。 这些名称用于从logging中检索相应的值。 这些值用于replacealertBody或alertLocalizationKeystring中的任何replacevariables。 值本身必须是NSString,NSNumber或NSDate对象。 不要用其他值指定键。 添加到推送通知时,可能会截断大于100个字符的string值。

如果您使用%@替代variables,那么这些variables将按照顺序遍历数组来replace。 如果使用forms为%n $ @的variables,其中n是一个整数,则n表示要使用的数组中项目的索引(从1开始)。 因此,数组中的第一项replace了variables%1 $ @,第二项replace了variables%2 $ @,依此类推。 您可以使用索引replacevariables来更改结果string中项目的顺序,这在您本地化应用程序的消息时可能是必需的。

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

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

而第二个样本:

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

你在哪里有“News:%1 $ @”作为Localizable.strings文件中的一个键

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