Почему на Ma c не появляются локальные уведомления? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь отправить локальные уведомления из моего приложения Ma c (написано быстро с использованием Какао) Пока я написал эту функцию

func scheduleNotification() {
        let content = UNMutableNotificationContent()
        content.title = "Test"
        content.body = "This is a test"
        content.sound = .default
        content.badge = 1
        let now = Date()
        let int = timePicker.dateValue.timeIntervalSince(now)
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: int, repeats: false)
        let request = UNNotificationRequest(identifier: "Test notification", content: content, trigger: trigger)
        center.add(request) { (err) in
            if err == nil {
                print("Success")
            }
        }

    }

Но по какой-то причине она не отображается баннер или что-нибудь в Центре уведомлений. Что-то не так с моим кодом или что-то еще вызывает это? (Я проверил, и приложение имеет разрешение на отправку уведомлений) А также, что эквивалентно в macOS для UIApplication.shared.applicationBadgeNumber = 0 на iOS?

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Итак, как выясняется, запрос разрешения является обязательным в MacOS Catalina, этого не хватало.

0 голосов
/ 06 мая 2020

Если приложение находится на переднем плане, вы должны использовать UNUserNotificationCenterDelegate.

UNUserNotificationCenter.current().delegate = self

Сначала уведомите этого делегата в viewDidLoad.

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

}

И после можно использовать такой делегат. Ознакомьтесь с дополнительной информацией в этом сообщении -> Локальные уведомления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...