2017-03-02 6 views
0

Ich habe eine App, die im Hintergrund ausgeführt werden muss, um ihre Hintergrundprozesse auszuführen. Ich möchte dem Benutzer jederzeit eine Benachrichtigung senden, wenn der Benutzer die App von Multitasking aus schließt, damit ich sie zum erneuten Öffnen der App auffordern kann. Ich habe die Diskussion hier gelesen: Local notification on application termination, und diese Lösungen ausprobiert, aber keine hat zu einer zuverlässigen Benachrichtigung bei der Beendigung der App durch den Benutzer geführt.Benachrichtigung bei Benutzer Beendigung der App (iOS)

Hier ist, was mein Code sieht aus wie gerade jetzt, in meiner AppDelegate.m Datei:

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter]; 
    [center removeAllDeliveredNotifications]; 
    //Try and alert the user 
    UILocalNotification *notification = [[UILocalNotification alloc] init]; 
    notification.alertBody = @"App was terminated unexpectedly. Notification-based logging won't work. Tap to restart App!"; 
    notification.soundName = UILocalNotificationDefaultSoundName; 
    [application scheduleLocalNotification:notification]; 

    // Saves changes in the application's managed object context before the application terminates. 
    [self saveContext]; 
} 

Im Debug-Modus des Simulators, diese Lösung liefert immer eine Benachrichtigung, wenn die Anwendung von Multitasking geschlossen ist. Leider bekomme ich auf meinem Handy diese Benachrichtigung nur gelegentlich bei Beendigung der App. Viele Male habe ich die App von Multitasking getötet und keine Benachrichtigung erscheint.

Ich stelle die Frage erneut, weil die Antworten auf den verknüpften Beitrag Jahre alt sind, und ich habe Grund zu der Annahme, dass dies erreichbar ist. Die Apps Moment und TripLog haben genau das Verhalten, das ich möchte.

Wenn jemand eine zuverlässige Lösung hat, um eine lokale Benachrichtigung an den Benutzer zu senden, sobald sie eine App von Multitasking schließen, würde das sehr geschätzt werden. Ich code in Objective C, also wäre eine Lösung in Objective C ideal.

+0

"Oftmals habe ich die App vom Multitasking gekillt und keine Benachrichtigung erscheint" Vielleicht bekommst du keine Benachrichtigung, weil die App bereits im Hintergrund vom System beendet wurde und somit nicht mehr läuft und es kein 'applicationWillTerminate gibt 'Ereignis. Es gibt keine Möglichkeit, dies zu erkennen. Genau das sagt http://stackoverflow.com/a/17988326/341994. – matt

Antwort

0

Es gibt keine Möglichkeit sicherzustellen, dass Ihre App im Hintergrund ausgeführt wird. Die Laufzeitumgebung kann sie jederzeit still im Hintergrund beenden, und Sie können in diesem Fall kein Ereignis abrufen.

Die apps, die dies erfolgreich zu tun scheinen sind wahrscheinlich tun etwas im Hintergrund, das heißt, zum Beispiel, sie tun Core Location Updates oder spielen einen Sound. Diese Art von spezialisiertem Verhalten erhöht die Chancen, einen applicationWillTerminate in den Hintergrund zu bekommen.

Verwandte Themen