[iOS] STICKERS BEACON ou nearables

jeudi 12 mars 2015

J’ai enfin reçu les stickers d’Estimote plus communément appelé « nearables ». Ce sont des beacons plus fin qu’on peut coller sur des objets et qui permet de savoir par exemple si ils sont en mouvement ou non , la température, la durée du mouvement etc…
Je me suis donc attelé à la création d’une application qui lorsqu’on bouge un produit affiche un descriptif du produit sur le téléphone.
La mise en place est évidemment très proche de celle des beacons à la différence que ceux-ci ne sont plus identifié par un proximityUUID, major et minor. Ils sont identifiés par un attribut « identifier » unique ou une catégorie (bike,chair,dog,etc…). Il existe toujours les méthodes « Monitoring » et « Ranging » pour scanner les nearables.

Bien évidement, il faut inclure la dernière version du SDK Estimote pour ma part (2.4.0), je l’ai fait en utilisant CocoaPods.

Dans .h, on ajoute le ManagerDelegate pour avoir accès aux fonctions delegate.

@interface ViewController : UIViewController <ESTNearableManagerDelegate>

@property (nonatomic, strong) ESTNearableManager* nearablesManager;

@end

Dans .m

- (void)viewDidLoad {
    self.nearablesManager = [ESTNearableManager new];
    self.nearablesManager.delegate = self;
    [self.nearablesManager startRangingForType:ESTNearableTypeAll];
}

Dans ce cas-ci, je scanne tous les « nearables » de toutes les catégories

Il ne reste plus qu’à utiliser la fonction delegate qui retourne tous les nearables trouvés:

- (void)nearableManager:(ESTNearableManager *)manager
      didRangeNearables:(NSArray *)nearables
               withType:(ESTNearableType)type
{
    if([nearables count] > 0){
		// POUR CHAQUE NEARABLES    
        for (ESTNearable* key in nearables) {
        	// JE VERIFIE SI IL A BOUGE
            if(key.isMoving){
                NSString * cat = [ESTNearableDefinitions nameForType:key.type];
                NSLog(@"Category:%@",cat);
                if([cat isEqualToString:@"chair"]){
					// ACTION FOR NEARABLE TYPE CHAIR
                }
                if([cat isEqualToString:@"dog"]){
					// ACTION FOR NEARABLE TYPE DOG
                }
                if([cat isEqualToString:@"bike"]){
					// ACTION FOR NEARABLE TYPE BIKE
                }
            }
        }
    }
}

Voilà, on est proche du code à fournir pour les beacons, par contre ça fonctionne pas mal mais pas à 100% (interférence?)

Sinon si vous téléchargez l’application d’estimote il y a un dossier nearables contenant des exemples d’utilisation (Température,Acceleromètre,trigger,Ranging,Monitoring)

Par contre, j’ai aussi essayé avec la fonction Monitoring et de lancer une notification mais il semblerait qu’il y ait un bug dans le sdk sous IOS7 quand on veut monitoré des nearables.

Tags: estimote , ibeacon , nearables , Xcode