Содержимое локального уведомления: субтитры или тело не отображаются [Swift 5] - PullRequest
2 голосов
/ 20 апреля 2020

Ранее в моем приложении работали локальные уведомления, которые показывают только название. Теперь я хотел бы иметь подзаголовок и тело для каждого уведомления. Я добавил subtitle и body для моего UNMutableNotificationContent. Но когда уведомление представляет себя, субтитров или тела не существует. Как это исправить?

Вот как я могу добавить локальное уведомление:

        let content      = UNMutableNotificationContent()
        content.title    = "title works!"
        content.subtitle = "testing subTitle"
        content.body = "testing body"
        content.sound    = .default

        let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)

        let identifier = "notificationId"
        let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)

        UNUserNotificationCenter.current().add(request) { (error) in
            if let error = error {
                print("Hey listen! Error adding notification: \(error.localizedDescription)")
            } else {
                print("saved notification")
            }
        }

Вот как я запрашиваю разрешения на уведомления:

private func requestNotificationAuthorization() {
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
            if let error = error {
                print("Hey listen! Got an error requesting notification authorization: \(error.localizedDescription)")
            } else {

                if granted {
                    DispatchQueue.main.async {
                      UIApplication.shared.registerForRemoteNotifications()
                    }
                } else {
                    print("not granted")
                }
            }
        }
    }

Вот мой willPresent код:

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .badge, .sound])
    }

1 Ответ

1 голос
/ 20 апреля 2020

Вы имеете в виду случай получения локального уведомления на переднем или на заднем плане?

Если оно находится на переднем плане, вы будете использовать userNotificationCenter(_:willPresent:withCompletionHandler:), и в этом случае, если вы хотите оповещение, вам нужно обработать оповещение самостоятельно (в своем коде). Таким образом, вы можете проверить свой код, начиная с userNotificationCenter(_:willPresent:withCompletionHandler:), чтобы увидеть, есть ли у вас персонализированное оповещение, которое только отображает заголовок. (Вы также можете отредактировать свой пост, чтобы показать нам, что у вас есть в userNotificationCenter(_:willPresent:withCompletionHandler:)).

...