Je sais que je peux transformer des appareils iOS en iBeacons ( Un appareil iOS7 peut-il agir comme un iBeacon? ). Malheureusement, je n'ai qu'un seul appareil et mes balises ne sont pas encore arrivées. Je me demandais donc comment transformer mon MacBook Air (version mi-2011, prend en charge Bluetooth 4.0) en iBeacon à des fins de test. Existe-t-il des applications prêtes à l'emploi disponibles, telles que l'avion pour iOS? Merci d'avance!
Note: Cela ne fonctionne que dans Mavericks, cela ne fonctionne PAS dans Yosemite.
Mavericks ne prend pas en charge iBeacon dans Core Location qui a été ajouté à iOS 7. Cependant, Mavericks a désormais la possibilité d’agir en tant que périphérique BLE. Étant donné qu'un iBeacon est fondamentalement un périphérique, il devrait (et est en fait) possible d'utiliser Mavericks en tant que iBeacon.
Pour créer un iBeacon sur iOS, vous devez d'abord créer un objet CLBeaconRegion
, puis utiliser la méthode peripheralDataWithMeasuredPower:
pour obtenir une NSDictionary
contenant les données de publicité nécessaires à la diffusion. Si vous prenez le contenu de cette NSDictionary
à partir d'un périphérique iOS et que vous l'utilisez sur Mavericks, vous obtenez un iBeacon.
J'ai créé une classe pour rendre cela plus facile et vous permettre de générer le dictionnaire de données de publicité directement sur Mavericks. Le code source est disponible sur https://github.com/mttrb/BeaconOSX
La classe BLCBeaconAdvertisementData
prend les valeurs d'alimentation proximityUUID
, major
, minor
et calibrées et crée un NSDictionary pouvant être transmis à la méthode startAdvertising:
de CBPeripheralManager
sur Mavericks.
La classe BLCBeaconAdvertisementData
est assez simple. Le travail principal est effectué selon la méthode suivante:
- (NSDictionary *)beaconAdvertisement {
NSString *beaconKey = @"kCBAdvDataAppleBeaconKey";
unsigned char advertisementBytes[21] = {0};
[self.proximityUUID getUUIDBytes:(unsigned char *)&advertisementBytes];
advertisementBytes[16] = (unsigned char)(self.major >> 8);
advertisementBytes[17] = (unsigned char)(self.major & 255);
advertisementBytes[18] = (unsigned char)(self.minor >> 8);
advertisementBytes[19] = (unsigned char)(self.minor & 255);
advertisementBytes[20] = self.measuredPower;
NSMutableData *advertisement = [NSMutableData dataWithBytes:advertisementBytes length:21];
return [NSDictionary dictionaryWithObject:advertisement forKey:beaconKey];
}
J'ai un article de blog plus détaillé à ce sujet sur http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/
La meilleure solution que j'ai trouvée jusqu'à présent est celle de Tim Duckett: https://github.com/timd/MactsAsBeacon
Saisissez simplement le projet, configurez un UUID, une valeur majeure et une valeur mineure, puis cliquez sur Diffuser. Vraiment simple. La solution repose sur cet article de blog: http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/
Si vous voulez économiser 9,99 €, jetez un coup d'œil à la dernière version du client open source de mttrb. J'ai ajouté un peu plus de GUI afin que vous puissiez ajuster tous les champs. https://github.com/deadfalkon/BeaconOSX/releases a même un téléchargement binaire.
Ceci est possible avec OSX Mavericks, mais pas dans Mountain Lion et les versions antérieures du système d'exploitation. Mon entreprise, Radius Networks, a un MacBeacon app qui le fait sur Mavericks.
Dans OSX Mountain Lion, contrairement à iOS 6+, il n’existe pas de prise en charge intégrée du mode périphérique Bluetooth que vous devez publier comme un iBeacon. Cela signifie rouler votre propre code Bluetooth de bas niveau, ce qui n’est pas facile à dire.
Mais il existe une solution pour les systèmes d'exploitation plus anciens. J'ai couplé un dongle Bluetooth externe sur mon Mac avec une machine virtuelle VirtualBox VM fonctionnant sous Linux et j'ai obtenu ce que vous recherchiez. Mon entreprise a mis ce VM à disposition pour un téléchargement gratuit ici: http://developer.radiusnetworks.com/ibeacon/
J'ai essayé toutes ces solutions, mais je n'ai pas réussi à faire capter un signal par AirLocate avant de m'être conformé à ceci: https://github.com/lgaches/BeaconEmitter Et j'ai commencé à émettre avec cet UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 Et avec un identificateur de type: Hello
J'ai également trouvé utile cet article sur AirLocate: AirLocate recherche-t-il uniquement des UUID particuliers?
Oui, c'est possible. Découvrez ce projet github https://github.com/nolim1t/iBeaconAdvertisement
Le seul utilitaire permettant de transformer un Mac en un iBeacon fonctionnant sous El Capitan (OS X 10.11) était iBeaconSwiftOSX . Aussi signalé travailler sous Yosemite (OS X 10.10). L'utilitaire de numérisation iOS (gratuit) utilisé était iBeacon Loc de Eurelis.
FYI: sur iOS, un scanner DOIT rechercher une combinaison SPÉCIFIQUE d'UUID et de majeur/mineur annoncée par un iBeacon. Assurez-vous que la configuration du scanner et celle de iBeacon correspondent.