GPS iPhone fonctionnant en arrière plan (ios >= 8)

Bonsoir à  tous,


Ma question est simple.

Est-il possible de créer une application fonctionnant en arrière plan (lorsqu'on a quitté l'application ou lorsque l'écran de vérouillage apparait) et qui utiliserait le GPS.

J'ai vu tout et n'importe quoi sur internet, avec des avis qui se contredisent tous.


Certains disent que toute application en arrière plan s'arrête automatiquement pour éviter de consommer inutilement la batterie des iPhone et d'autres disent qu'il est possible de relancer l'application pour éviter qu'elle ne s'éteigne.


Mon but est donc de créer une application qui récupère les données GPS et les renvoie vers un serveur tout simplement.

Le problème étant bien évidemment qu'elle puisse fonctionner en arrière plan.

Si vous avez des liens à  me conseiller ou conseil je suis preneur.



J'ai déjà  trouvé des sources mais j'ai pas trop envie de les utiliser pour le moment car j'aurais voulu avoir des avis de développeur ayant déjà  développé ce genre d'appli en arrière plan et qui fonctionne sur des ios >=8


 


merci à  vous


https://github.com/voyage11/Location


http://www.raywenderlich.com/29948/backgrounding-for-ios


 


Réponses

  • Le blog de RayWenderlich est une référence ; tu peux faire confiance, donc oui c'est possible.


    Et comme d'habitude la vérité se trouve dans la documentation Apple.


  • LeChatNoirLeChatNoir Membre, Modérateur

    A ton avis, les applis GPS genre mappy GPS, Waze, iPhygénie etc fonctionne comment ?


     


    Le multi-tâche est autorisé sous iOS depuis iOS.... 6 je crois ?


     


    Alors certes, c'est du multi tâche très ciblé. Tu peux pas faire une appli qui fait une boucle infiinie et va chercher des infos sur le web par exemple.


     


    Mais tu peux faire une appli qui diffuse de l'audio ou qui utilise le GPS en arrière plan sans pb. Il suffit d'obtenir les droits avec qques clés), de demander l'autorisation à  l'utilisateur et roule.


     


    ++


  • Merci pour vos réponses. Concernant la document de Apple je l'avais lue mais quelque chose me posait problème :


     


    Note: If your app is terminated either by a user or by the system, the system doesn't automatically restart your app when new location updates arrive. A user must explicitly relaunch your app before the delivery of location updates resumes. The only way to have your app relaunched automatically is to use region monitoring or the significant-change location service.

     



     


    C'est le fait que le système puisse mettre fin à  l'application...


     


    Je souhaite utiliser le standard location service et non le significan_change service (pour évidemment obtenir des coordonnées GPS à  un intervalle de temps donné).


     


    En gros, je souhaiterais installer mon appli sur mon Iphone, et une fois que je l'ai lancée (avec un button start ou autre peu importe) elle ne s'arrête plus de tourner pour me renvoyer mes coordonnées gps sur un serveur toutes les minutes par exemple.


     


    Donc en fait il s'agirait d'une boucle infinie mais qui utilise le GPS. Mais tu dis que ce genre de boucle n'est pas envisageable ?


     


    Si vous avez des pistes je vous remercie.


     


    en tout cas vous êtes très réactif sur ce forum est c'est très appréciable. Bonne journée à  vous

  • LeChatNoirLeChatNoir Membre, Modérateur

    en fait, c'est pas comme ça que ca va marcher.


    Ton appli va se déclarée comme étant à  l'écoute de changements GPS significatifs.


     


    Et tu vas implémenter les méthodes qui vont recevoir ces notifications de changement.


     


    Ca, c'est tout à  fait possible. Par contre, effectivement, si l'utilisateur "tue" ton appli, normal qu'elle ne capte plus rien.


    Et le système se réserve le droit de tuer ton appli quand :


    => la batterie est faible et que l'utilisateur choisi le mode économie (j'imagine)


    => il y a trop de pression sur la mémoire (donc l'utilisateur a mis ton appli en background mais en lance plein d'autres par la suite)


     


    Ce sont des cas aux limites et le système ne le fera pas en utilisation courante. A priori.


  • Oui je suis d'accord que le système puisse tuer une application en cas de mémoire surchargée ou lorsque l'utilisateur utilise le mode économie d'énergie.


     


    Qu'entends tu par : ' c'est normal que l'application ne capte plus rien, si l'utilisateur tue l'appli' ? -> lorsqu'il quitte l'application en cliquant sur le bouton home ??


    Si le gps permet de fonctionner en arrière plan, je ne vois pas comment l'utilisateur aurait la possibilité de tuer l'appli (à  moins qu'il redémarre son téléphone, ou alors se mettre en mode avion ou autre?!).


     


    De plus, tu écris "ton appli va se déclarer comme étant à  l'écoute de changements GPS significatifs." -> justement, je ne cherche pas a implémenter cette méthode d'écoute significative, mais bel et bien celle de la standard service location qui permet d'utiliser le GPS pour obtenir la position à  intervalle de temps donné et non lorsqu'il s'agit d'un changement de position important.


     


    Tu avais également parlé de boucle infinie et dis que cela n'était pas possible. Dans le cas de l'utilisation de la méthode qui permet de récupérer une coordonnées GPS toute les X minutes par exemple, il faut donc passer par une boucle, et cette boucle est donc infinie puisqu'elle doit fonctionner en arrière plan... Qu'en est il ?


     


    En gros pour être plus précis sur le projet j'aimerais développer :


    - une application qui fonctionne en arrière plan : utilisant le GPS avec la méthode la plus précise pour obtenir les coordonnées ( et non la méthode des changements significatifs) et utiliser une boucle toute les X minutes pour obtenir les coordonnées GPS pour les envoyer vers un serveur.


     


    Donc d'après ce que vous me dites, est-ce possible ou pas ? (et pourrais tu m'expliquer ce que tu entends par 'le client peut tuer l'appli).


     


    En tout cas, c'est sympa de m'aider dans ce projet, votre aide est importante pour moi et vous êtes de bons conseilleurs.


     


    ps : avez vous des amis / connaissances ayant implémenté ce genre d'appli et si oui ont il la possibilité de nous éclairer sur ce projet ?


     


    bonne soirée a vous

  • DrakenDraken Membre
    décembre 2015 modifié #7


     


    (et pourrais tu m'expliquer ce que tu entends par 'le client peut tuer l'appli).


     




    Les applications passées en background sous visibles sous forme de vignette, en pressant deux fois sur home. Si une vignette est poussée vers le haut d'un mouvement du doigt, elle est effacée de l'écran ET du gestionnaire de multitâche. C'est ce qu'on appelle "tuer une application".. 


     


    Beaucoup de gens le font systématiquement, pensant que les applications sous forme de vignettes vident la batterie (ce qui est faux, sauf évidement celles utilisant l'audio ou le GPS).

  • titchgamingtitchgaming Membre
    décembre 2015 modifié #8

    Ok donc pour résumer concernant la question d'une application tuée par le système :


     


    Une application est tuée par le système si :


        - l'utilisateur redémarre l'os


        - lorsque l'utilisateur delete les vignettes avec le bouton home


        - lorsqu'une application consomme trop de mémoire


        - lorsque le mode batterie faible est activé


        - ou automatiquement au bout d'une certaine durée d'inactivité


     


    Concernant le dernier point (ou automatiquement au bout d'une certaine durée d'inactivité), si il s'agit d'une application qui contient les clés dans infoplist que l'utilisation peut fonctionner en background etc... c'est bon alors ??


     


    Pourquoi alors dans mon premier lien https://github.com/voyage11/Locationle développeur a dû ruser et utiliser des méthode pour relancer le gps pour éviter que l'appli ne soit tuée ?


     


    good night everybody


  • LeChatNoirLeChatNoir Membre, Modérateur

    Ce post est un peu vieux. Depuis, il a posté une nouvelle méthode : https://github.com/voyage11/GettingLocationWhenSuspended


     


    En gros, une application, c'est déjà  une boucle infinie, donc oui, faire ce que tu veux faire est possible.

  • Ok LeChatNoir, j'essaierai de voir la nouvelle méthode du lien que t'as fourni.


    Cependant, si cette personne a développé une nouvelle méthode, cela signifie donc qu'il n'est pas possible de faire tourner une application GPS en arrière plan de base alors, et qu'une application est tuée par le processus?!


    Donc de base, Apple ne propose donc pas de solution adéquate si je comprends bien.?!


  • Ce n'est pas une nouvelle méthode qui a été développée, simplement l'utilisation de ce qui est prévu par Apple.


  • Ok ça marche.


    Merci pour vos éléments de réponse.


     


    J'essaierai prochainement de mettre en place une appli de ce type, je vous tiendrai au courant si je rencontre des soucis.


    Bonne fin de week end à  tous.

Connectez-vous ou Inscrivez-vous pour répondre.