Faire fonctionner les services de localisation sur iOS 8

Lors du passage d'iOS 7 à 8, des corrections mineures sont à effectuer dans votre code pour que votre application puisse utiliser facilement les services de localisation de l'appareil.

Vous avez développé votre application pour iOS 7, mais vous constatez que le service de localisation ne fonctionne plus lorsqu'un iPhone ou un iPad est mis à jour sous iOS 8 ? Ce problème vient du fait que le SDK (kit de développement) a eu des modifications dans la mise à jour d'iOS 8. Il faut effectuer des corrections mineures dans votre code pour que votre application puisse utiliser facilement les services de localisation de l'appareil sur lequel elle est installée.

Avant d'utiliser le service de localisation du système, vous devez appeler l'instruction requestWhenInUseAuthorization ou l'instruction requestAlwaysAuthorization. La première instruction demande l'autorisation au système d'utiliser le service de localisation lorsque l'application est en cours d'utilisation, tandis que la deuxième demande d'autoriser cette utilisation en permanence, y compris quand l'application est en arrière-plan. L'instruction s'écrirait comme ceci :

//Initialisation du LocationManager
self.locationManager = [[CLLocationManager alloc] init];
//L'utilisation d'une condition pour tester la version de iOS est nécessaire, car sinon, le code ne fonctionnera plus pour IOS7.
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
 [self.locationManager requestWhenInUseAuthorization] //Autorisation d'utilisation quand l'application est active
 [self.locationManager requestAlwaysAuthorization] //Autorisation d'utilisation de la localisation en permanence
}

La deuxième modification à effectuer se situe dans le fichier info.plist de votre application. Vous devez ajouter la clé NSLocationWhenInUseUsageDescription ou la clé NSLocationAlwaysUsageDescription selon la méthode que vous avez utilisée. Vous devez ensuite ajouter un texte que les utilisateurs verront et qui décrit pourquoi vous utilisez la localisation. Exemple :

<key>NSLocationWhenInUseUsageDescription</key>
<string>L'application a besoin de la localisation pour répondre à votre requête</string>

<key>NSLocationAlwaysUsageDescription</key>
<string>L'application a besoin de la localisation pour envoyer des notifications sur des événements au plus près de vous</string>

Divers