1

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) 

Antwort

0

Beste ich sagen kann, das Problem war wegen presentLocalNotificationNow async zu sein und die Rückkehr sofort so nicht genügend Zeit für das System der Benachrichtigung registrieren war. Ich löste das Problem, indem ich die Benachrichtigung früher einplante, damit genügend Zeit zur Verfügung stand.

Verwandte Themen