Ich habe eine einfache Anwendung geschrieben, um zu testen und zu überwachen, wie Hintergrund fetch funktioniert in iOS7.
Als Erstes habe ich die UIBackgroundMode-Optionen in meiner Info.plist-Datei festgelegt.
Dann;
Ich habe den folgenden Code in application: didFinishLaunchingWithOptions: Methode in AppDelegate.m :
eingefügt
Endlich habe ich die Anwendung application: (UIApplication *) implementiert performFetchWithCompletionHandler: Methode wie angefordert.
Jedes Mal, wenn ich auf die Schaltfläche Debug- & gt; Hintergrundabruf simulieren klicke, ändert sich die Batch-Nummer der Anwendung und funktioniert wie erwartet.
Ich habe es jedoch nie geschafft, dass es funktioniert, wenn die Anwendung nicht ausgeführt wird (nicht einmal im Hintergrundmodus, nur nicht ausgeführt).
Apple sagt, wenn die Anwendung nicht läuft und das Betriebssystem die folgenden Methoden ausführen möchte:
%Vor%Meine Frage ist also, ob es eine Möglichkeit gibt, den Hintergrund-Abruf zu testen, wenn die App nicht läuft?
Ich teste das auf meinem iPod 5. Generation mit iOS 7.1 .
Bearbeiten 2: Wenn ein Nutzer die App über den App-Switcher beendet, wird der Hintergrund-Abruf nie wieder stattfinden. Dies funktioniert wie von Apple beabsichtigt. Weitere Informationen finden Sie unter " Wenn Ihre App in den Hintergrund kommt " Dokumentation für Details:
In den meisten Fällen startet das System Apps nicht neu, nachdem sie erzwungen wurden Beenden durch den Benutzer. Eine Ausnahme sind Standort-Apps, die in iOS 8 und später werden sie neu gestartet, nachdem sie vom Benutzer beendet wurden.
Und ein alter Entwicklerforenbeitrag (der Link existiert leider nicht mehr) ...
"Wenn Sie eine App über die Multitasking-Benutzeroberfläche beenden, wird das System dies nie tun Starten Sie die App automatisch erneut. Die Logik hier ist, dass, wenn die Der Nutzer hat Ihre App gelöscht. Wahrscheinlich möchten sie, dass sie nicht mehr funktioniert. "
Sie können eine einfache GET-Anfrage stellen, zB: " Ссылка " auf Ihren Webserver, dann grep den Zugriff. Melden Sie sich am Webserver für "? ping = 1"
anBearbeiten: Eine weitere Methode zum Testen der App, die im Hintergrund gestartet wird (z. B. ohne zweimal auf die Home-Schaltfläche tippen und zu ihr wechseln zu können), besteht darin, ein Hintergrundschema zu erstellen. Gehe zu Produkt - & gt; Schema - & gt; Verwalten Sie Schemata und duplizieren Sie dann Ihr Standardschema.
Bearbeiten Sie dann das neue Schema und klicken Sie auf die Registerkarte Optionen und aktivieren Sie die Option "Aufgrund eines Hintergrund-Abrufereignisses starten". Wenn Sie Ihre App ausführen, wird sie direkt in den Hintergrund geladen, wie bei normaler Verwendung.
>
Tags und Links objective-c iphone ios background-process