Я создал фиктивный проект, чтобы воспроизвести проблему, которую я вижу. В моем 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