如何将 object 与通知一起存储,以便我可以在收到通知时调用它?
How to store an object together with a notification so that I can call it when receiving the notification?
我是编程新手,这是我的第一个项目。我正在制作一个非常简单的提醒应用程序;我创建了一个 class 提醒,其属性为 .moreInformation (String)、.fireDate (Date)、.fromDate (Date)、.title (String) 和 .image(UIImage)。您可以在应用程序中编辑所有这些属性。我的问题只是:我需要一个合适的解决方案来存储这个 object 'reminder'。我正在使用 UserNotifications 注册我的通知:
reminder.fireDate = date
reminder.image = image
reminder.description = descriptionTextView.text
reminder.title = titleTextView.text
reminder.savedOndate = savedOnDateString
let center = UNUserNotificationCenter.current()
let category = UNNotificationCategory(identifier: "General", actions: [], intentIdentifiers: [], options: .customDismissAction)
center.setNotificationCategories([category])
let content = UNMutableNotificationContent()
let contentText = reminder.savedOnDate
content.title = "Reminder"
content.body = "Your Reminder from the \(contentText) has arrived!"
let date2 = reminder.fireDate
var components = Calendar.current.dateComponents(in: TimeZone.current, from: date2)
components.hour = 18
components.minute = 0
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)
let request = UNNotificationRequest(identifier: "Reminder", content: content, trigger: trigger)
center.add(request) { (error : Error?) in
if let theError = error {
print(theError.localizedDescription)
}
}
当用户收到通知后,他应该会在启动应用程序时看到一个 pop-up 视图,将他带到一个单独的视图控制器,其中显示描述文本、fromDate 等。
但是我如何将 object 与通知一起存储,以便当通知到达时,另一个视图控制器显示正确的描述文本/标题等?
您可以使用 UNMutableNotificationContent
实例的 userInfo
字典来存储自定义信息。
请记住,存储在 userInfo
字典中的对象必须是 属性 列表类型。这意味着您要么需要将 reminder
对象转换为此类类型(例如 NSDictionary
),要么,这将是一个更清晰的解决方案,在 class 中实现 NSCoding
reminder
对象和 en/decode 它使用 NSKeyedArchiver
/NSKeyedUnarchiver
.
我是编程新手,这是我的第一个项目。我正在制作一个非常简单的提醒应用程序;我创建了一个 class 提醒,其属性为 .moreInformation (String)、.fireDate (Date)、.fromDate (Date)、.title (String) 和 .image(UIImage)。您可以在应用程序中编辑所有这些属性。我的问题只是:我需要一个合适的解决方案来存储这个 object 'reminder'。我正在使用 UserNotifications 注册我的通知:
reminder.fireDate = date
reminder.image = image
reminder.description = descriptionTextView.text
reminder.title = titleTextView.text
reminder.savedOndate = savedOnDateString
let center = UNUserNotificationCenter.current()
let category = UNNotificationCategory(identifier: "General", actions: [], intentIdentifiers: [], options: .customDismissAction)
center.setNotificationCategories([category])
let content = UNMutableNotificationContent()
let contentText = reminder.savedOnDate
content.title = "Reminder"
content.body = "Your Reminder from the \(contentText) has arrived!"
let date2 = reminder.fireDate
var components = Calendar.current.dateComponents(in: TimeZone.current, from: date2)
components.hour = 18
components.minute = 0
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)
let request = UNNotificationRequest(identifier: "Reminder", content: content, trigger: trigger)
center.add(request) { (error : Error?) in
if let theError = error {
print(theError.localizedDescription)
}
}
当用户收到通知后,他应该会在启动应用程序时看到一个 pop-up 视图,将他带到一个单独的视图控制器,其中显示描述文本、fromDate 等。
但是我如何将 object 与通知一起存储,以便当通知到达时,另一个视图控制器显示正确的描述文本/标题等?
您可以使用 UNMutableNotificationContent
实例的 userInfo
字典来存储自定义信息。
请记住,存储在 userInfo
字典中的对象必须是 属性 列表类型。这意味着您要么需要将 reminder
对象转换为此类类型(例如 NSDictionary
),要么,这将是一个更清晰的解决方案,在 class 中实现 NSCoding
reminder
对象和 en/decode 它使用 NSKeyedArchiver
/NSKeyedUnarchiver
.