iOS 7 Fetch en arrière-plan Lorsque l'Application n'est Pas en cours d'Exécution
J'ai écrit une application simple afin de tester et de surveiller la façon dont la fetch en arrière-plan fonctionnalité fonctionne dans iOS7.
Tout d'abord, j'ai mis en UIBackgroundMode options dans mes Infos.fichier plist.
Alors;
J'ai ajouté de code ci-dessous dans application:didFinishLaunchingWithOptions: méthode dans AppDelegate.m:
Enfin, j'ai mis en place le application:(UIApplication *)application
performFetchWithCompletionHandler: méthode comme demandé.
Chaque fois que je clique Debug->Simuler Fetch en arrière-plan bouton, les changements de la demande du numéro de lot et fonctionne comme prévu.
Cependant, je n'ai jamais été capable de le faire fonctionner lorsque l'application n'est pas en cours d'exécution (même pas dans le mode d'arrière-plan, tout simplement pas en cours d'exécution).
Apple dit que lorsque l'application n'est pas en cours d'exécution et OS souhaite exécuter les méthodes suivantes, respectivement:
application:(UIApplication *)application didFinishLaunchingWithOptions:
applicationDidEnterBackground:(UIApplication *)application
application:(UIApplication *)application performFetchWithCompletionHandler:
Donc ma question est qu'est-il un moyen de tester fetch en arrière-plan lorsque l'application n'est pas en cours d'exécution?
Je suis en train de tester cela sur mon iPod 5e Gen avec iOS 7.1.
Essayez de planifier une Notification Locale sur l'une des affaires et de voir si elle déclenche.
J'ai essayé d'afficher une notification locale à chaque fois qu'il est appelé, mais je ne pouvais pas trouver un moyen de déclencher le fetch en arrière-plan lorsque l'application n'est pas en cours d'exécution. Je voulais juste vous assurer que si c'est vraiment ce qu'il propose.
Combien de temps êtes-vous attendre? Par exemple, mon application se réveille tous les 1 à 2 heures pour récupérer, je vois mes messages de débogage dans les journaux lors de la laisser l'appareil pour la nuit.
Si l'application se bloque système de le relancer (sûr à 100%), mais si l'utilisateur tuer app je pense que c'récente plus courir (mais pas sûr:)
OriginalL'auteur ozgur | 2014-03-24
Vous devez vous connecter pour publier un commentaire.
Edit 2: Noter que si un utilisateur tue l'app sur l'app switcher, le fetch en arrière-plan ne se reproduira plus jamais. C'est en travaillant comme Apple l'a voulu. Reportez-vous à la "Comprendre Quand Votre Application est Lancé en arrière-plan" docs pour plus de détails:
Et un vieux forums de développeurs post (le lien, malheureusement, n'existe plus)...
Vous pourriez faire une simple requête GET, par exemple: "http://dev.example.org/?ping=1" de votre serveur web, puis filtrer les accès.ouvrez une session sur le serveur web?ping=1"
Edit: une Autre méthode pour tester l'application en cours de lancement dans l'arrière-plan (par exemple: sans être en mesure de double-tap sur le bouton home et l'interrupteur) est en créant un arrière-plan uniquement schéma. Aller au Produit -> Système -> Gérer les Régimes et en double par défaut de votre système.
Ensuite modifier le nouveau système et cliquez sur l'onglet Options et cochez la case "Lancer en raison d'un contexte d'extraction de l'événement" - lorsque vous exécutez votre application, il va être lancé directement dans le fond, comme il le ferait dans une utilisation normale.
L'application Gmail utilise un autre mécanisme (Notifications Push) avec BackgroundFetch de le faire.
La pomme forums lien semble mort.
merci, a ajouté un docs lien et enlevé le cassé lien des forums.
comment mettre à jour votre position actuelle à mon serveur via l'api, chaque minute, lorsque l'application a été fermée/suspendu?
OriginalL'auteur taber