Ich bin mir nicht sicher, ob dies nicht möglich ist oder ob ich es falsch implementiere.Lokale Benachrichtigung während eines inaktiven Anwendungsstatus
Ich versuche, eine Aufgabe im Hintergrund zu beenden beginBackgroundTask
(expirationHandler
) und anschließend ein LocalNotification
veröffentlichen, sobald es auf iOS10
abgeschlossen ist. Das Problem ist, dass die Notification
nicht konsequent feuern wird - ich kann eine breakpoint
setzen, um es geplant mit presentLocalNotificationNow
zu sehen, aber es wird nicht immer für den Benutzer angezeigt und nur einmal die App kommt zurück zu foreground
(durch Öffnen von der Startseite) wird didReceiveLocalNotification
aufgerufen werden.
Wenn ich den Anwendungsstatus überprüfe, wenn ich die Benachrichtigung plane, hat es einen rawValue von 2, der meiner Meinung nach inaktiv ist, also nehme ich an, dass dies der Grund ist, warum er die Benachrichtigung nicht an den Benutzer liefert.
Ich habe versucht, die notification
für 5 Sekunden nach dem Abschluss der Aufgabe und dann endBackgroundTask
sofort aufrufen, aber die Benachrichtigung immer noch nicht konsequent für den Benutzer angezeigt. EndBackgroundTask
wird aufgerufen, die ich annehmen würde, sollte die Anwendung in den Hintergrund von inaktiv verschieben, an dem Punkt sollte die notification
zeigen, aber ich nehme an, es ist nicht sofort und nach dem Ermessen des Systems, wenn das tatsächlich passiert.
Was mache ich falsch?
Der entsprechende Code ist:
let task = UIApplication.shared.beginBackgroundTask(expirationHandler: nil)
// Long running task
let notification = UILocalNotification()
notification.soundName = UILocalNotificationDefaultSoundName
notification.alertBody = "Message"
let settings = UIUserNotificationSettings(types: [.alert, .sound], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)
UIApplication.shared.presentLocalNotificationNow(notification)
UIApplication.shared.endBackgroundTask(task)