2012-09-24 4 views
43

In iOS 6 wurde die purpose Eigenschaft von CLLocationManager, um den Grund für die Verwendung von Standortdiensten (@property(copy, nonatomic) NSString *purpose) zu beschreiben, veraltet.Ersatz für "Zweck" -Eigenschaft von CLLocationManager

Welcher Ersatz, falls vorhanden, wird von Apple vorgeschlagen?

+0

Es gibt eine Antwort mit einem Score von ≥30; Hast du darüber nachgedacht es als akzeptiert zu markieren? – bdesham

Antwort

62

Der Ersatz für die purpose Eigenschaft in iOS 6 ist ein neuer Info.plist Schlüssel mit dem Namen NSLocationUsageDescription (aka "Datenschutz - Standortverwendungsbeschreibung").

Der Schlüssel ist documented in the Information Property List Key Reference, aber leider ist es nicht mit der Depretion Note der purpose Eigenschaft erwähnt.

Allerdings ist die CLLocationManager.h diesen Kommentar hat:

* Veraltet. Legen Sie die Zweckzeichenfolge in Info.plist mit dem Schlüssel NSLocationUsageDescription fest.

In Ihrem Code können Sie sowohl den Schlüssel und die purpose Eigenschaft (Sie können jedoch, wenn der Standort-Manager zuerst auf diese Wähler reagiert überprüfen möchten, ob/wann diese Methode tatsächlich in der Zukunft entfernt).

Bei Verwendung von iOS 6 verwendet der Standortmanager den Schlüssel.
Wenn der Schlüssel unter iOS 6 ausgeführt wird, wird der Schlüssel ignoriert und die Eigenschaft purpose wird verwendet.

+6

Wie genau können Sie diese Zeichenfolge dann lokalisieren? Oder brauchst du dann einen lokalisierten infoplist.strings nur für diesen Zweck? (kein Wortspiel beabsichtigt) –

+0

@BobdeGraaf lokalisierte infoplist.strings klingt wie der Weg von hier aus: http://Stackoverflow.com/a/14144989/159758 – DonnaLea

3

Ich hatte gerade das gleiche Problem in meiner App.

Ich habe festgestellt, dass Sie jetzt die Aktivität der CLLocationManager! einstellen können Sie können verschiedene CLActivityTypes wählen, so dass Sie nicht mehr Ihren eigenen Zweck schreiben müssen.

Hier ist zum Beispiel für eine Navigation basierend App

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation]; 

Andere mögliche CLActivityTypes sind:

- CLActivityTypeFitness 
- CLActivityTypeOther 
- CLActivityTypeOtherNavigation 
+0

Ändert es, was dem Benutzer angezeigt wird? Und ich möchte genauer sein (wie es früher mit "Zweck" möglich war), anstatt nur TypeOther zu verwenden. Warten auf einen Ersatz, ich werde weiterhin die veraltete Methode verwenden. – Guillaume

+0

Gut die Nachricht, die dem Benutzer angezeigt wird, ist eine Art Standardmeldung: "'AppName' möchte Ihren aktuellen Standort verwenden." Ich verstehe nicht, warum Apple dies geändert hat, ich bin sicher, dass Benutzer die Details wissen möchten. .. –

+0

Vergessen Sie nicht, dass offiziell offiziell aufgegeben bedeutet, bald aufgegeben werden, aber die Definition von bald kann variieren. – Guillaume

Verwandte Themen