Projet avec geo-localisation automatique

Bonjour,



Je veux, pour ma nouvelle application, que celle-ci puisse me notifier (localement) lorsque je rentre dans des régions pré-définies.

J'utilise donc CLLocationManager avec startMonitoringSignificantLocationChanges.



Je suis, pour l'instant, en plein test. J'ai ajouté trois régions, lorsque je rentre dans ces régions, je m'envoie tout simplement une UILocalNotification. Cela marche parfaitement, que l'application soit en background ou qu'elle soit carrément "killée".



Par contre, je vois que la petite icône de localisation (dans la status bar) est toujours active sur mon téléphone. Je trouve ça un peu déroutant et j'ai peur que les users soient également surpris.

Qu'est-ce que vous en pensez ?



Et surtout qu'est-ce qu'Apple en pense ? Est-ce que mon application a toutes ses chances d'être validée ?



Par avance, merci.

Réponses

  • Il me semble justement que c'est le principe.

    Si on utilise la géo-localisation, il ne faut pas que ce soit à  l'insu (de son plein gré) de l'utilisateur.
  • Cette géo-localisation permanente ne tire pas trop sur la batterie ?
  • 'jpimbert' a écrit:


    Il me semble justement que c'est le principe.

    Si on utilise la géo-localisation, il ne faut pas que ce soit à  l'insu (de son plein gré) de l'utilisateur.




    Justement, l'utilisateur peut accepté ou non d'utiliser la géo-localisation comme dans toutes les autres applications.

    Mais dois-je aussi l'informer que la géo-localisation continue même lorsque l'application n'est plus active ?



    Draken :



    Voici ce qu'Apple préconise pour éviter d'utiliser trop de batterie :
    <br />
    <br />
    - (void)applicationDidEnterBackground:(UIApplication *)application {<br />
    if ([CLLocationManager significantLocationChangeMonitoringAvailable]) {<br />
    // Stop normal location updates and start significant location change updates for battery efficiency.<br />
    [viewController.locationManager stopUpdatingLocation];<br />
    [viewController.locationManager startMonitoringSignificantLocationChanges];<br />
    }<br />
    else {<br />
    NSLog(@&quot;Significant location change monitoring is not available.&quot;);<br />
    }<br />
    }<br />
    <br />
    - (void)applicationDidBecomeActive:(UIApplication *)application {<br />
    <br />
    if ([CLLocationManager significantLocationChangeMonitoringAvailable]) {<br />
    // Stop significant location updates and start normal location updates again since the app is in the forefront.<br />
    [viewController.locationManager stopMonitoringSignificantLocationChanges];<br />
    [viewController.locationManager startUpdatingLocation];<br />
    }<br />
    else {<br />
    NSLog(@&quot;Significant location change monitoring is not available.&quot;);<br />
    }<br />
    }<br />
    




    Est-ce vraiment efficace ?

    Il faudrait que je fasse plus de test. (mais à  l'oeil nu comme ça je ne trouve pas que ça consomme énormément de batterie.)
  • AliGatorAliGator Membre, Modérateur
    Normalement si tu as bien codé ça comme il faut, et n'utilise QUE la géolocalisation par région (sans donc nécessiter trop de précision et sans vraiment nécessiter la puce GPS puisqu'il se base alors uniquement sur les relais cellulaires et Wifi n'ayant pas besoin d'une précision aussi fine que par le GPS, ce qui permet donc d'économiser la batterie), l'icône dans la barre de statut doit représenter une flèche vide (creuse), et non une flèche pleine (remplie de blanc), justement pour indiquer à  l'utilisateur que la Géolocalisation par région est en fonctionnement et donc qu'il est géolocalisé, mais pas de façon précise non plus (géoloc "light" quoi).



    Tu as exactement la même icône quand, dans l'application "Rappels", tu demandes à  être rappelé de qqch non pas à  une heure précise, mais quand tu quittes un lieu ou arrive dans un lieu (puisqu'il utilise lui aussi la localisation par région pour juste savoir si tu rentres dans une zone ou sort d'une zone, sans avoir besoin d'une précision GPS et donc sans consommer sur la puce GPS pour rien)
  • Ok merci AliGator pour ces précisions.

    Je vais donc me pencher sur la geoloc "light".

    Je ne me suis jamais informé sur ce sujet donc si t'as des pistes ... n'hésites pas ^^



    Je vais de suite voir la doc.
  • AliGatorAliGator Membre, Modérateur
    Sinon il y a la session CocoaHeads Rennes #12
  • 'AliGator' a écrit:


    Sinon il y a la session CocoaHeads Rennes #12




    Quand elle sera disponible... Je viens de regarder, ce n'est pas encore le cas ! Il parait que çà  ne va pas tarder... image/wink.png' class='bbc_emoticon' alt=';)' />
  • AliGatorAliGator Membre, Modérateur
    Rââh bah alors il fout quoi le Julien, là ... :-/
  • Pareil image/crybaby.gif' class='bbc_emoticon' alt=' :'( ' />
  • J'ai enfin pu regarder ta vidéo, tout d'abord merci pour ton travail.



    J'ai juste une mini-mini-mini-question ^^ :



    En gros, j'ai bien suivi tes étapes pour intégrer une librairie à  un projet. Le problème c'est qu'une fois que je renseigne le Header Search Path, je n'ai pas accès à  l'AUTO-COMPLETION !!! Je n'arrive pas à  retrouver le .h de ma librairie. Il faut que j'écrive manuellement le nom de l'import !

    Une idée ?
  • AliGatorAliGator Membre, Modérateur
    Alors en fait un petit souci de ma vidéo, c'est que j'y montre ce que je faisais à  l'époque, mais après la conférence et en en discutant un peu après, peu de temps après la conf j'ai trouvé la solution ultime que je n'avais pas trouvé avant.



    En fait, contrairement à  ce que je montre dans la vidéo (j'en parle d'ailleurs un peu dans ma présentation en disant que ce n'est pas la solution idéale mais que je cherche encore à  trouver mieux... et j'ai trouvé ce mieux justement peu après !), il n'y a pas besoin de renseigner les Header Search Path en pratique si on prend la peine de mettre les Headers de notre librairie dans la partie "Copy Files" de l'onglet "Build Phases" du target de la librairie.

    Mettre tous les headers publics dans cette phase "Copy Files" va permettre de demander à  Xcode de copier les .h indiqués dans le dossier de Build Products lors qu'il va compiler la librairie, ce qui va permettre (sans avoir besoin de renseigner ensuite aucun Header Search Path) de pouvoir faire des #import <NomDeLaLib/NomDuHeader.h> comme ce qu'on fait quand on utilise des frameworks Apple !



    Je détaille cette nouvelle procédure sur mon GitHub ici : https://github.com/AliSoftware/Xcode-Utils/tree/master/LibraryWithRsrc#how-to-generate-a-clean-an-reusable-static-library
  • Ok je vais tester cela alors.

    Un grand merci à  toi image/wink.png' class='bbc_emoticon' alt=';)' />
Connectez-vous ou Inscrivez-vous pour répondre.