L'obtention de Bluetooth LE scan des données de réponse avec iOS
Je suis en train de travailler avec la technologie Bluetooth à Faible Énergie des appareils, et je me demandais si il est possible de lire l'Analyse de Données de Réponse à une annonce avec iOS et Core Bluetooth sans connexion.
Je comprends qu'après avoir lu une annonce de paquets, vous pouvez demander des données supplémentaires à partir du périphérique dans le format de un 31 octet d'analyse de réponse. Je sais que le Cœur de Bluetooth suggère que, si l'annonce du paquet est complet, vous pouvez mettre le nom local dans l'analyse paquet de réponse, mais ça vous permettra de voir l'ensemble du paquet?
OriginalL'auteur ccpmark | 2014-08-19
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez utiliser
CoreBluetooth
afin de lire les données du fabricant ou d'un service octets de données d'un c? BLE de la publicité tant qu'il n'est PAS un iBeacon publicité. Si c'est un iBeacon publicité,CoreBluetooth
va bloquer votre capacité à voir les octets. Le rappel que vous utilisez est comme suit:Les premières données de service ou le fabricant octets de données sera présent à l'intérieur de la
NSDictionary *advertisementData
. Mais ils la clé de la détention de ces données seront supprimées par le système d'exploitation pour les iBeacons.Voici un exemple de ce que vous obtenez dans le advertisementData
NSDictionary
dans le rappel. Cet exemple est destiné à détecter une AltBeacon publicité (un open-source balise standard), avec des identifiants 2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 1 2Vous pouvez voir comment décoder le ci-dessus octets en regardant le AltBeacon spec ici.
Pour plus de détails au sujet de pourquoi vous ne pouvez pas lire iBeacon et de données ainsi que supplémentaires de code montrant comment ce faire, vous devez, voir ici:
http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html
Les informations ci-dessus s'applique aux données de la diffusion de la publicité elle-même. iOS n'est certainement PAS demande d'analyse des données de réponse automatique. Je n'ai pas essayé de faire cela, et au premier coup d'œil, je ne vois rien dans
CBCentralManager
vous permettant de le faire... c'est probablement ce qui devrait être une nouvelle question.Core Bluetooth automatiquement la demande d'analyse des données de réponse lorsque l'application est au premier plan. Ce n'est pas quelque chose que vous pouvez demander. didDiscoverPeripheral sera généralement appelé deux fois. D'abord sans l'analyse des données de réponse, et la deuxième fois avec. Cependant, dans le fond, le deuxième événement avec la numérisation des données de réponse peut ne pas se produire.
Je crois que ce post est très confus - la CRUE de la PUBLICITÉ octets reçus par Core Bluetooth ne SONT PAS DISPONIBLES. Il y a des octets oui, pour les Services et les Données du Fabricant par exemple, mais ces champs ont déjà été analysés. Il y a beaucoup d'informations filtrées par iOS que nous ne sommes pas - et je crois que les gens la lecture de ce post sont déroutants, la pleine raw octets transmis par un BLE de l'appareil et reçu par iOS, à partir d'octets disponibles dans le
advertisementData
paramètre. S'il y a bien un moyen d'obtenir les premières octets, s'il vous plaît laissez-moi savoir.est exact que les octets brutes de la publicité ne sont pas disponibles, mais le raw octets du fabricant de données le cadre d'une publicité absolument sont disponibles pour le BLE fabricant type de publicité. De même, les premières octets des données de service sont disponibles dans une BLE de services type de publicité. J'ai édité ma réponse pour le rendre plus clair.
OriginalL'auteur davidgyoung
Je suis en train de travailler avec un périphérique qui a une certaine fabricant les données qui je crois est transmis dans l'analyse de la réponse car il n'y a pas de place pour elle dans l'annonce initiale avec un cryptage de 128 bits UUID plus de canal, RSSI, et connectable drapeau. Je suis en recevoir deux appels à didDiscoverPeripheral:... en succession rapide (3ms en dehors, y compris certains gestion du temps dans mon code). Le premier n'a pas le kCBAdvDataManufacturerData clé dans le dict, mais que la seconde. Je suis en supposant que l'analyse de la réponse est demandé automatiquement et les résultats de répondre au deuxième appel.
OriginalL'auteur eclux