Я успешно реализовал код для доставки удаленных уведомлений пользователям, подписанным на создание записей в базе данных publi c. В моем делегате приложения у меня есть это:
// MARK: UserNotification Delegate Methods
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// code to handle push while app is in the foreground
print("Handle push from foreground")
// custom code to handle push while app is in the foreground
print("\(notification.request.content.userInfo)")
completionHandler([.alert, .sound])
}
и
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
print("Handle push from background or closed")
// if you set a member variable in didReceiveRemoteNotification, you will know if this is from closed or background
print("\(response.notification.request.content.userInfo)")
completionHandler()
}
У меня две проблемы. 1) Я хотел бы получить запись, которая вызвала срабатывание подписки, и 2) заполнить полученную полезную нагрузку userInfo информацией из этой записи. Прямо сейчас ключ «alertBody» имеет общее сообщение c, которое было установлено при сохранении подписки в базе данных, и я хочу, чтобы оно было более конкретным c.
Есть ли способ перехватить полезную нагрузку, получить запись с необходимыми данными и ЗАТЕМ отобразить уведомление?