Développer une application ibeacon compatible avec IOS7 et IOS8

jeudi 12 mars 2015

Voici les instructions que je mets en place pour que mon application soit compatible IOS 7 et IOS 8.

  • Dans mon projet, je mets le deployment target à 7.0
  • Dans cocoapods, dans le fichier PodFile, je rajoute l’instruction platform ios7 et le pod ‘EstimoteSDK’, ‘2.4.0’
  • Pour que les beacons soient détectables sous IOS 8, il faut rajouter des autorisations. En faite depuis IOS 8, Apple demande qu’on rajoute dans l’application une alert avertissant l’utilisateur que la location sera nécessaire pour l’application.
    Dans la fonction viewDidLoad
    // New iOS 8 request for Always Authorization, required for iBeacons to work!
    if([self.beaconManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
    	[self.beaconManager requestAlwaysAuthorization];
        [self.beaconManager requestWhenInUseAuthorization];
    }
    
  • Il faut aussi rajouter les autorisations dans le fichier plist et on peut les traduire dans nos fichiers Localize.
    NSLocationAlwaysUsageDescription String Location is required to find out where you are
    NSLocationWhenInUseUsageDescription String Location is required to find out where you are
    
    ios8_beacon_authorizationDescription
  • Si vous utilisez des notifications locales à l’approche d’un beacon, il faut aussi sous IOS8 rajouter des autorisations à faire accepter par l’utilisateur. Voici le lien pour plus d’information.
  • Un autre point que j’ai aussi soulevé avec la version Estimote SDK supérieur à 2.0.0, la région que vous scannez doit se trouver en global de votre vue et non plus utilisé la région passé en paramètre dans les fonctions delegate.
  • Une autre constatation est que si vous utilisez la méthode de Ranging, est de toujours la garder actif (pas faire de stop/start) et d’utiliser une variable pour savoir si on ajoute ou non le popup d’information. Et donc le scan tourne tout le temps dans ce cas là.

Tags: ibeacon , IOS 8 , IOS7