Frage

Ich habe ein paar Fragen zu Core-Lage.

1) Sollte der Benutzer Müll Erlaubnis für meine App zu verwenden Kern Standort oder Kern Standort aus irgendeinem Grund nicht verfügbar ist, gibt es einen Rückfall? (Device Locale zum Beispiel?)

2) Kann ich Cache eine Vorrichtung Standort für die nächste Zeit? Does Core-Location tut dies selbst?

3) Ich brauche wirklich die Sonnenuntergang Zeit in der Gegend des Benutzers während der Mitte der Frühjahrssaison, und ich habe eine Funktion, das zu tun, wenn ich die Breite und Länge des Gerätes habe. Vielleicht kann ich nur eine Annahme über die auf Locale basierend Zeit machen? (Beispiel:. In den USA übernimmt etwa 19.00 Uhr)

EDIT:

Ich versuche wirklich Sonnenuntergang im Benutzer-Bereich für eine App zu berechnen. Nichts mit der Karte zu tun. Ich bin die folgende Sequenz von Ereignissen unter Berücksichtigung:

  • Nach Core-Standort Verfügbarkeit. Wenn ja, nutzen und speichern sie in NSUserPreferences. Wenn Core-Standort nicht verfügbar ist, auf die Fallbacks weitergehen.
  • Überprüfen Sie, ob eine gespeicherte Ort. Wenn es gespeichert wird, verwenden Sie es. Wenn nicht, geht auf ...
  • Überprüfen Sie, ob die gewählte Zeit des Benutzers.
War es hilfreich?

Lösung

1) Streng genommen, wenn der Benutzer nicht erlaubt, mit Corelocation oder, falls die Erlaubnis gegeben wurden, aber Corelocation nicht verfügbar ist, gibt es keine andere Ausweich den Standort des Nutzers als Breitengrad zu bekommen, Länge Paar. das Gebietsschema möglicherweise nicht in allen Fällen. Erstens, es wird Ihnen nur eine Annäherung geben, die viel zu weit von der Realität sein können. Allerdings ist es an Ihnen zu beurteilen, ob diese Annäherung für Ihre Anwendung in Ordnung ist. Darüber hinaus gibt es einige Benutzer ein Gebietsschema unterscheidet sich von dem in ihrem Land im Zusammenhang einer Verwendung. Und, haben Sie keine Garantie, dass die Menschen im Ausland reisen, werden das Datum / Zeit jedes Mal neu einstellen.

2) Kern Location-Caches standardmäßig die letzte Position vom GPS-Gerät abgerufen werden. Doch für die Menschen im Ausland dieses im Cache gespeicherten Standort reisen sicher falsch sein (auch für Menschen, nur ein paar Meilen entfernt Reisen), und in der Regel sollten Sie den zwischengespeicherten Wert und localize wieder den Benutzer jedes Mal verwerfen. Ich verstehe, dass für die Menschen in ihrem Land reisen wird dies nicht (in der Regel) große Probleme verursachen. Aber es kommt nur darauf an Land: in Italien reist, wird nicht die Zeit ändern, aber in den USA reisen, kann die Zeit bis 3 Stunden ändert sich.

3) Ich würde vorschlagen, Core-Lage zu versuchen, mit und, im Fall von Problemen, fragen Sie einfach den Benutzer zur Eingabe seine / ihre lokale Zeit und Ort (die Stadt sollte für Ihre Zwecke ausreichen, um). Wenn Sie für den Standort des Benutzers fragen wählen, dann können Sie das entsprechende Breite / Länge Paar zu bekommen, aber das wird eine funktionierender Netzwerkverbindung erforderlich ist.

Andere Tipps

2) von der Online-Dokumentation für CLLocationManager:

  

Die Lage Dienst gibt eine anfängliche Lage so schnell wie möglich, im Cache gespeicherten Informationen zurückkehrt, wenn verfügbar.

Sie können die CLLocation Zeitstempel überprüfen, um zu sehen, ob es ein im Cache gespeicherte Wert ist oder nicht.

3) Wenn Sie sich entscheiden locale für eine anfängliche TZ Annäherung zu verwenden, denken Sie daran, dass die Nutzer reisen, und können ihre locale nicht sofort zurückgesetzt. Sie können das aktuelle TZ Objekt erhalten mit:

[NSTimeZone localTimeZone]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top