Frage

Ich suche ein Feedback, Blog-Links, etc., die einige Tipps und Tricks für das iPhone GPS-Entwicklung bieten. Ich habe die API lesen und verstehen, ich meine Demo-app haben und läuft, etc, aber ich habe in einige „Macken“ mit GPS auf dem iPhone laufen. Zum Beispiel scheint es, dass Sie Sie viel weniger Standort-Updates erhalten, wenn Sie Ihr iPhone „Energiesparmodus“ eintritt. Ich habe gelesen, dass Sie diese durch Abspielen von Musik in Ihrer Anwendung zu bekämpfen [nicht sicher, ob dies wahr ist].

Es scheint auch, dass hinsichtlich einer angemessenen Pedometer machen Sie mit horizontalen Genauigkeiten von weniger als 20 Meter jede Lese ausfiltern soll. Klingt das nicht wahr?

Gibt es eine Art Checkliste heraus auf dem Netz für iPhone GPS gotchas?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Ich weiß nicht, von einer bestimmten Liste, aber hier ein paar Dinge, die Sie beachten sollen:

  • Sie machen das GPS-Lookups nicht. Sie machen das Core-Location-Lookups. Core Location könnte oder nicht seine Informationen aus GPS bekommen. Viele Leute verwenden noch pre-3g iPhones, die nicht über GPS und sogar auf einem 3G-Telefon GPS kann in vielen Fällen nicht verfügbar sein (wenn die Person drinnen ist, zum Beispiel). In diesen Fällen wird das Telefon auf Basis von Mobilfunkmasten triangulieren versuchen und Core Location wird das Ergebnis zurück. Es wird viel ungenauer als GPS.
  • Core-Standort werden die Daten zwischenspeichern. Die erste Lesung es zu Ihrer App bietet, ist wahrscheinlich eine alte Lesung sein, die möglicherweise oder möglicherweise nicht genau sind, je nachdem, ob das Telefon bewegt hat. Stellen Sie sicher, den Zeitstempel von jedem Ort zu überprüfen und sehen, ob es aus der Zeit vor Ihrer App gestartet.
  • Ich weiß nicht, was Sie unter „Energiesparmodus“ bedeuten, aber wenn Sie denken, wenn der Bildschirm / off gesperrt ist, die nicht vom Laufen Core-Standort nicht zu stoppen, wenn Ihre Anwendung noch läuft. Im Gegenteil ist es einfach, den Akku zu viel schneller abzulaufen als man erwarten würde, wenn Sie das Telefon während einer App sperren, die Core-Standort verwendet ausgeführt wird, weil das Telefon die App als neue Standortdaten zur Verfügung aktualisieren wird fortgesetzt. Sie könnten dies in Ihrer Anwendung vermeiden durch das Hören für UIApplicationWillResignActiveNotification der Bildschirmsperre zu erkennen und UIApplicationDidBecomeActiveNotification Unlock zu erkennen.
  • Höhere Präzision Ergebnisse mehr Zeit zum Erwerb nehmen, denn je länger Sie warten, desto besser die Ergebnisse, bis zu einer Grenze. Wenn Sie sich entscheiden, müssen Sie innerhalb von N Meter, überlegen, wie lange kann der Benutzer es für das Telefon zu Hause warten stehen in auf seine Lage.

Ob 20 Meter genau genug ist, ist etwas, das nur Sie beantworten können, je nachdem, wie Sie erwarten, dass Ihre Anwendung verwendet werden. Testen Sie die App und sehen, ob es die Art und Weise funktioniert, wie Sie es wollen, arbeiten.

Andere Tipps

Tom hatte eine große Antwort (ich besonders die übliche Rückkehr des ersten Wertes beachten, wollte eine ältere gecached Lage auch sein mag), aber ich hatte ein paar Dinge hinzuzufügen:

  • Sie können den Standort-Manager sagen, wieder zu starten und zu stoppen, wenn Sie es erzwingen möchten Sie mindestens eine weitere Standortaktualisierung zu erteilen.
  • Wenn Sie nicht bewusst waren, gibt es bequeme Methoden in CLLocation Sie zwischen zwei Orten um den Abstand zu geben.
  • Da die Dokumente zur Kenntnis, sollten Sie Locationmanager implementieren: didFailWithError: Auch wenn Sie nicht haben (wenn auch nur die Standortmanager-Updates für eine Zeit zu stoppen)
  • .
  • Test gründlich Szenarien, in denen der Benutzer Standortaktualisierungen für Ihre Anwendung nicht zulässt!
  • Sehr, sehr selten können Sie Updates aus Bestellung erhalten (das heißt Sie erhalten eine genauere Lage, gefolgt von einem etwas weniger genau eine vom früheren)
  • Der Simulator wird Ihnen eine Standortaktualisierung, sondern wird immer Ihre Position als Apple-HQ melden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top