2012-09-24 13 views
43

En iOS 6, la propiedad purpose de CLLocationManager, para describir el motivo por el que se usan los servicios de ubicación (@property(copy, nonatomic) NSString *purpose) ha quedado obsoleta.Sustitución para la propiedad "propósito" de CLLocationManager

¿Qué reemplazo, en su caso, propone Apple?

+0

Hay una respuesta con una puntuación de ≥30; ¿Has considerado marcarlo como aceptado? – bdesham

Respuesta

62

El reemplazo de la propiedad purpose en iOS 6 es un duplicado de la llave Info.plist llamado NSLocationUsageDescription (alias "Privacidad - Descripción del uso de la ubicación").

La clave es documented in the Information Property List Key Reference pero desafortunadamente no se menciona con la nota de desaprobación de la propiedad purpose.

Sin embargo, el CLLocationManager.h tiene este comentario:

* desuso. Establezca la cadena de propósito en Info.plist utilizando la clave NSLocationUsageDescription.

En su código, puede establecer la clave y la propiedad purpose (pero es posible que desee comprobar si el administrador de ubicación responde a que el selector primero si/cuando ese método se quitan realmente en el futuro).

Si se ejecuta en iOS 6, el administrador de ubicación utilizará la clave.
Cuando se ejecuta con menos de iOS 6, la clave se ignorará y se usará la propiedad purpose.

+6

¿Cómo se puede localizar esta cadena, entonces? ¿O necesita una lista local infoplist.strings solo para este propósito? (sin juego de palabras) –

+0

@BobdeGraaf localized infoplist.strings suena como el camino a seguir desde aquí: http://stackoverflow.com/a/14144989/159758 – DonnaLea

3

Acabo de tener el mismo problema en mi aplicación.

Encontré que ahora puede establecer la Actividad del CLLocationManager! Puede elegir diferentes CLActivityTypes, por lo que ya no necesita escribir su propio propósito.

Así es, por ejemplo, para una navegación basada en la aplicación

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation]; 

Otros CLActivityTypes posibles son:

- CLActivityTypeFitness 
- CLActivityTypeOther 
- CLActivityTypeOtherNavigation 
+0

¿Cambia lo que se muestra al usuario? Y me gustaría ser más específico (como antes era posible con "propósito"), en lugar de simplemente usar TypeOther. En espera de un reemplazo, continuaré usando el método en desuso. – Guillaume

+0

Bueno, el mensaje que se muestra al usuario es como un mensaje predeterminado: "'AppName' quiere usar tu ubicación actual." No entiendo por qué Apple cambió esto, estoy seguro de que los usuarios querrán saber los detalles. .. –

+0

No olvides que desaprobar oficialmente significa que pronto se abandonará, pero la definición de pronto puede variar. – Guillaume

Cuestiones relacionadas