【发布时间】:2020-09-16 12:11:08
【问题描述】:
我正在尝试使用 CloudKit 向订阅了发布剧集的频道的用户发送推送通知。我可以创建CKRecord,订阅用户,并在新剧集发布时收到通知,尽管我希望我的alertBody 成为新发布的剧集的标题。
现在推送通知显示用于保存订阅的原始CKRecord 的alertBody。
我读过有人解释如何使用 Localization.Strings 文件,但不知道这对我有什么帮助。 CloudKit 甚至可以做到这一点吗?
static func registerSubscriptionWith(ID: String) {
let predicate = NSPredicate(format: "channelID == %@", ID)
let subscription = CKQuerySubscription(recordType: "Episode", predicate: predicate, options: .firesOnRecordCreation)
let myContainer = CKContainer.default()
let publicDatabase = myContainer.publicCloudDatabase
let recordID = CKRecord.ID(recordName: ID)
publicDatabase.fetch(withRecordID: recordID) { (record, error) in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
if record != nil {
let notification = CKSubscription.NotificationInfo()
notification.title = record!["channelName"]
notification.alertBody = record!["caption"]
notification.soundName = "default"
subscription.notificationInfo = notification
publicDatabase.save(subscription) { result, error in
if error != nil {
print(error!.localizedDescription)
} else {
print("Success subscribing user to episode notifications")
}
}
}
}
}
}
【问题讨论】:
-
那你为什么不使用 notification.alertBody = NSLocalizedDescription(record!["caption"]) ?
-
嘿@Chris,请告诉我如何实现它。你的意思是
NSLocalizedDescriptionKey?此外,您还添加了记录对象。订阅用户时,我应该保持publicDatabase.fetch的这种配置方式吗?添加您的行时出现错误。
标签: ios swift xcode icloud cloudkit