2016-11-01 5 views
0

Ich muss eine Aufgabe ausführen, wenn die App im Hintergrund ist. Wenn die App zum Beispiel in den Hintergrundzustand wechselt, wird alle 5 Minuten (App befindet sich zu diesem Zeitpunkt im Hintergrund) eine Aufgabe ausgeführt. Ich habe versucht mit Standort geändert, aber ich kann nicht einen genauen Ort verwenden (für Batterieverbrauch), dann habe ich signifikanten Standort geändert, aber wenn Benutzer nicht bewegt oder ändert sich nicht Zelle Turm Standort wird nicht aktualisiert.Hintergrund Task swift 3.0 iOS

Können Sie mir dabei helfen?

+0

Dies hängt davon ab, was Sie im Hintergrund tun möchten. Bei iOS sind nur bestimmte Aufgaben im Hintergrund möglich: [Lang laufende Aufgaben implementieren] (https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#// apple_ref/doc/uid/TP40007072-CH4-SW4) –

+1

Sie müssen wahrscheinlich Ihren Ansatz überdenken. iOS lässt angehaltene Anwendungen die Ausführung für bestimmte Zeitintervalle nicht planen. Was ist die Aufgabe? Vielleicht können Sie es auf eine andere Weise auslösen, z. B. durch einen Server-Push – Paulw11

+0

Lesen Sie hierzu: https://blog.newrelic.com/2016/01/13/ios9-background-execution/ –

Antwort

0

Sie könnten die iOS-Hintergrundabruffunktion verwenden, in der Sie das Mindestintervall für den Hintergrundabruf angeben können. Das tatsächliche Intervall zwischen dem nächsten Aufruf Ihres Codes wird jedoch vom iOS-Framework bestimmt.

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 

    let data: String? = nil 

    do { 
     //fetch some data 
     if let data = getSomeNewData() { 
      /* use the completionHandler to talk to the system and tell us if the app fetched new data, or if no data was available. */ 
      completionHandler(.newData) 
     } else { 
      completionHandler(.noData) 
     } 
    } catch { 
     print(error) 
     completionHandler(.failed) 
    } 

} 

siehe auch Frage: swift-ios-refreshing-app-data-when-in-background

Eine weitere Möglichkeit zur Einrichtung ist ein Server, der alle 5 Minuten ein (stumm) Push-Benachrichtigung an Ihre App senden, die Ihre App reagieren.