Вызов removeAllPendingNotificationRequests () в приложенииWillTerminate не работает на iPad - PullRequest
0 голосов
/ 26 апреля 2020

Я создал фиктивный проект, чтобы воспроизвести проблему, которую я вижу. В моем ContentView я планирую несколько повторяющихся уведомлений.

struct ContentView: View {
    var body: some View {
        VStack {
            Button("Schedule notifications") {
                let content = UNMutableNotificationContent()
                content.title = "Title"
                content.body = "body"
                content.sound = UNNotificationSound.default
                let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true)
                let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
                UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
            }

            Button("Request Permission") {
                let current = UNUserNotificationCenter.current()
                current.requestAuthorization(
                    options: [.sound, .alert],
                      completionHandler: { completed, wrappedError in
                          guard let error = wrappedError else {
                              return
                          }
                  })
            }
        }

    }
}

Затем в своем AppDelegate я пытаюсь отменить эти повторяющиеся уведомления до завершения работы приложения.

   func applicationWillTerminate(_ application: UIApplication) {
        UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
        print("============== removing all notifications")
    }

Что Я обнаружил, что мои запланированные уведомления все еще доставляются, хотя я вижу свое заявление на печать в консоли Xcode. Но если я запускаю тот же тест на iPhone, мое уведомление не доставляется, как ожидалось.

Я что-то не так делаю, или это ошибка? Я использую 13.4.1 на iPad и 13.3.1 на iOS

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