2016-03-01 1 views
0

Mon application doit enregistrer (aussi précisément que possible) l'emplacement et le mouvement de l'utilisateur au fil du temps. Si je laisse l'appareil en veille, la précision du GPS semble automatiquement réduite. Je peux l'empêcher de dormir, mais de toute évidence c'est une fuite supplémentaire sur la batterie. Je voudrais permettre à l'affichage de dormir, mais maintenir la précision maximale pour le gestionnaire de location. J'ai des mises à jour de localisation cochées dans la section Modes d'arrière-plan. Mon code ressemble à ceci ...Comment garder le GPS à pleine puissance pendant que l'appareil dort

locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation 
    locationManager.distanceFilter = 1 
    locationManager.activityType = .Fitness 
    locationManager.requestAlwaysAuthorization() 
    locationManager.pausesLocationUpdatesAutomatically = false 
    locationManager.startUpdatingLocation() 

     UIApplication.sharedApplication().idleTimerDisabled = true 

Je voudrais vraiment supprimer cette dernière ligne, mais tous les tests que je l'ai fait sur un 4s suggère que, dès que l'appareil dort, il perd la précision.

+0

Pourriez-vous s'il vous plaît définir le "gestionnaire de localisation perd de la précision"? Comment exactement vous définissez la précision ici - est-ce la précision horizontale pour les emplacements signalés, le filtre de distance, quelque chose d'autre? –

+0

Oui, merci d'avoir répondu. Je mesure la précision horizontale (.horizontalAccuracy). – Melchester

+0

Pouvez-vous dire comment change-t-on .horizontalAccuracy en passant du premier plan à l'arrière-plan et finalement au mode suspendu? Pouvez-vous poster des lectures d'échantillons? Je ne suis intéressé que par trois variables: horizontalAccuracy, speed et timestamp. –

Répondre

0

Si l'on suppose qu'il est iOS 9 vous devez également cette ligne:

locationManager.allowsBackgroundLocationUpdates = true;

Par défaut, cette variable est définie sur Faux, ce qui signifie que iOS ne transmettra pas les mises à jour de position à une application suspendue.

+0

Je visais iOS 8. Savez-vous s'il existe un moyen de le faire en utilisant cette version? – Melchester

+0

La variable allowBackgroundLocationUpdates permet simplement de remplacer le nouveau comportement de préservation de la batterie introduit par iOS9 et de revenir au mode de fonctionnement iOS8. –