Como siempre, las nuevas entregas de este maravilloso sistema operativo incluyen nuevas «obligaciones» a la hora de programar cuyo desconocimiento puede llevar al desastre el correcto funcionamiento de nuestras apps…
El último de los cambios con los que me he tenido que enfrentar a la hora de actualizar una de nuestras apps ha consistido en autorizar el uso del GPS… aunque pueda parecer una tontería a priori, el problema es más serio de lo que parece, puesto que la aplicación queda en un estado de error irrecuperable si usamos localización para alguna de sus utilidades y no cambiamos el código para adaptarlo a IOS8.
Básicamente, una invocación para la utilización de la localización en IOS 7 podía ser algo así (importando CoreLocation):
[codeblocks name=’cero’]
El problema es que en IOS 8 antes debe llamar a [CLLocationManager requestWhenInUseAuthorization] o [CLLocationManager requestAlwaysAuthorization] para permitir la localización en primer y segundo plano respectivamente…. Pero incluso si se implementa uno de los métodos anteriores, no se pedirá permiso al usuario, a menos que hay una entrada en la info.plist para NSLocationAlwaysUsageDescription o NSLocationWhenInUseUsageDescription, esto a mi en concreto me ha supuesto un quebradero de cabeza, ya que estas definiciones dejaron de incluirse en IOS5, y el proyecto en concreto venía de esa versión… así que no tenía ni idea de que no estaban definidas en mi plist, por lo que he tenido que agregar las líneas siguientes a mi info.plist:
[codeblocks name=’uno’]
E invocar la localización de la siguiente manera:
[codeblocks name=’dos’]
Con esto ya no deberías tener problemas con la localización y con que tu iphone con IOS8 te solicite permisos para su utilización.
Hasta la próxima! 😉