Вы должны добавить пользовательские данные timestamp
в полезную нагрузку Push Notification
.
Обычно полезная нагрузка выглядит так:
{
"aps":{
"alert":{
"title":"Hello",
"body":"How are you?"
},
"badge":0,
"sound":"default"
}
}
Если вы хотите добавить настраиваемые поля в полезную нагрузку, она должна выглядеть так ->
{
"aps":{
"alert":{
"title":"Hello",
"body":"How are you?"
},
"badge":0,
"sound":"default"
},
"timestamp": "1590736069"
}
Настраиваемые поля должны располагаться вне объекта aps
.
Пожалуйста, проверьте это -> Документация Apple
Затем вам нужно его проанализировать
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
// Print full message.
guard
let aps = userInfo["aps"] as? NSDictionary,
let alert = aps["alert"] as? NSDictionary,
let body = alert["body"] as? String,
let title = alert["title"] as? String,
let timestamp = userInfo["timestamp"] as? String
else {
// handle any error here
return
}
print("Title: \(title) \nBody:\(body)")
print("Timestamp is: \(timestamp)")
completionHandler()
}
Примечание: Не нужно использовать AnyHashable
для использования строки в качестве ключа. Используйте, например, userInfo["aps"]
Получение метки времени текущей даты
Если вам нужно знать дату получения уведомления, вы можете просто получить текущее значение метки времени Date
вот так ->
// Declare this in `didReceive` method and now you know the timestamp of notification received date
let timestamp = Date().timeIntervalSince1970