Ich verwende Remote-Benachrichtigung mit Inhalt verfügbar: True-Flag, um die App im Hintergrund auf Silent-Push-Benachrichtigung zu starten und Updates von Remote-API zu verarbeiten oder abzurufen. Der Code wird ordnungsgemäß ausgeführt, wenn sich die App im Vordergrund befindet, oder im angehaltenen Zustand nach dem vorherigen Ausführen.Hintergrundaufgabe auf Remote-Benachrichtigung nach einer kurzen Zeit unterbrochen
Während Tests im Hintergrund, wenn die Anwendung vom System basierend auf eingehenden Silent Push-Benachrichtigungen gestartet wird, wird der Code nur teilweise verarbeitet und die App wird nach ca. 150 ms schnell angehalten. Ich erwartete, dass die App 30 Sekunden Zeit hat, um die eingehende Benachrichtigung und ihre Nutzlast zu verarbeiten. Muss ich die App-Funktionen anpassen oder eine Hintergrundaufgabe anfordern, wenn ich mehr Zeit für die Verarbeitung und/oder das Abrufen neuer Daten benötige?
Bereitstellungsziel iOS 8, Testen unter iOS 9. Xcode 7.3.1, Swift 2.2.1.
Capabilities: Hintergrund Modi, Modi: Remote-Benachrichtigungen
AktiviertAppDelegate
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
if let userInfo = userInfo as? [String: AnyObject] {
// Processing of the payload is done in separate Operation class (using Operations framework)
// The completion handler is called on the end of the processing/fetching in that operation
// But in case of launching the app in the background it never reaches the call of the completion handler
let parseNotificationOperation = ParseNotificationOperation(userInfo: userInfo, fetchCompletionHandler: completionHandler)
MainService.shared.enqueueApnsOperation(parseNotificationOperation)
}
}
Funktioniert gut, danke !! –
Immer willkommen Kumpel :) –