7
votes

Mouvement de base à l'arrière-plan?

Le cadre de mouvement principal fonctionnera pendant que l'application est à l'arrière-plan?


2 commentaires

Avez-vous déjà trouvé une réponse satisfaisante?


J'ai déjà vu des podétères obtenant les données du mouvement de base après le retour du mode arrière-plan. Il devrait donc y avoir un moyen de ne pas recevoir de données via startacceleromètreUpdateStoQueue . Pour moi, cela fonctionne quelques secondes / minutes après avoir mis l'application à l'arrière-plan, mais après un certain temps, il s'arrête. Peut-être que vous devez utiliser l'un des modes d'arrière-plan (audio, emplacement, VoIP) pour garder l'application "vivante".


4 Réponses :


0
votes

dépend de votre définition de travail ... L'animation de base doit-elle continuer à courir ou espérez-vous que la vue soit gelée? Lorsqu'une application fonctionne dans l'arrière-plan, seuls certains processus sont autorisés à exécuter. (Notifications par exemple).

Pour la plupart de l'utilisateur de l'application, et par extension est en pause jusqu'à ce que vous déclenchiez ApplicationDidbecomeactive . Une fois que cela commence à nouveau, il devrait reprendre, mais à nouveau ne pas continuer à courir en arrière-plan. On peut dire que la plupart des jeux sur iOS exécutant OpenGL, il est en pause jusqu'à ce que l'application soit activée à nouveau.


0 commentaires

0
votes

L'une des applications utilisées pour suivre vos étapes de marche est assez incroyable, car même vous en faites de l'arrière-plan ou de tuer, il peut indiquer les étapes que vous avez marchées. Donc, un mécanisme interne du gyroscope et des gps et d'autres capteurs peuvent continuer lorsque les applications sont tuées.


0 commentaires

0
votes

Pour laisser votre application fonctionner en arrière-plan, vous devez le déclarer comme une tâche de fond. Le problème est qu'il n'y a que quelques-uns UibackgroundModes ... et le mouvement n'est pas celui de celui-ci.

Une solution de contournement pourrait consister à activer l'emplacement uibackgroundMode , qui est destiné à informer les utilisateurs de connaître leur emplacement même si l'application est à l'arrière-plan. Vous pouvez ensuite envelopper votre logique de mouvement à l'intérieur. Néanmoins, l'inconvénient évident de ceci est qu'il s'agit d'une utilisation du GPS, qui videra de manière significative la batterie ...


2 commentaires

Si Activez le mode de position de l'arrière-plan, n'oubliez pas d'ajouter cette instruction à la description de l'application sur l'App Store "La poursuite de l'utilisation de GPS en cours d'exécution dans l'arrière-plan peut diminuer considérablement la durée de vie de la batterie." Sinon, Avis de l'App Store Won ' t approuver l'application.


Si votre application n'utilise pas clairement le cadre de localisation de base en arrière-plan, vous aurez des chances minces d'être acceptées.



1
votes

Le cadre de mouvement de base permet d'accéder aux données historiques des données CMPPEDomètre, de sorte que votre application utilise uniquement ceci, il n'est pas nécessaire de fonctionner en arrière-plan.

J'ai joué avec CM la semaine dernière et dans mes tests Si vous avez une requête active en cours d'exécution lorsque votre application est envoyée à l'arrière-plan, le gestionnaire de requêtes reçoit une inondation d'événements (qui s'est produite pendant que l'application a été suspendue) à son retour au premier plan. Je ne sais pas combien d'événements seront mis en cache et je n'ai rien vu dans les docs à ce sujet.

Ce comportement semble être suffisant. Je ne peux pas penser à un cas d'utilisation pour le mouvement de base où vous avez besoin d'un accès de fond constant, les données historiques CMPPomètre ne suffisent pas et convient aux directives de l'App Store.


2 commentaires

Vous avez raison sur tout, mais il y a un étui d'utilisation pour Cmpedomètre lorsque l'application est en arrière-plan: Si vous affichez le nombre d'étapes dans le badge de l'icône de l'application, vous devez réveiller votre application de temps en temps (quand Le mode de fond iOS décide qu'il est en forme) et met à jour son nombre de badges; Étant donné que vous ne pouvez pas avoir accès au flux en direct lors de l'arrière-plan, vous pouvez le contourner avec QuerypedomètreData (à partir du début: date, à la fin de: Date, withhandler Handler: @Sescaping CmpedomètreHandler) .


Je suppose que Apple laisse cela à travers depuis qu'il est rare et surtout inoffensif.