Reemplazo por la propiedad “propósito” de CLLocationManager

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

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

El reemplazo de la propiedad de purpose en iOS 6 es una nueva clave NSLocationUsageDescription llamada NSLocationUsageDescription (también conocida como “Privacidad – Descripción de uso de ubicación”).

La clave está documentada en la Referencia clave de la lista de propiedades de información, pero desafortunadamente no se menciona con la nota de desaprobación de la propiedad de purpose .

Sin embargo, CLLocationManager.h tiene este comentario:

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

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

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

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

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

Aquí hay, por ejemplo, una aplicación basada en la navegación

 [self.gps setActivityType:CLActivityTypeAutomotiveNavigation]; 

Otros posibles CLActivityTypes son:

  - CLActivityTypeFitness - CLActivityTypeOther - CLActivityTypeOtherNavigation