ios - programming - Obtenir l'adresse MAC du périphérique Bluetooth basse énergie




ios bluetooth programming (3)

Je travaille actuellement sur une application iOS basée sur des périphériques Bluetooth à faible consommation d'énergie. Afin d'obtenir un identifiant unique pour comparer les périphériques obtenus, je dois obtenir l'adresse MAC des périphériques.

Il est à noter que la propriété UUID d'un périphérique varie d'un périphérique iOS à l'autre. De plus, pour qu'un périphérique puisse obtenir un UUID, il doit se connecter au moins une fois à un périphérique maître. Étant donné que je dois gérer les enregistrements, je ne souhaite pas établir de connexion. En parcourant le portail de services bluetooth, j'ai constaté que les informations sur le périphérique étaient en elles-mêmes un service, qui ne pouvait être récupéré que si une connexion avait été établie entre le périphérique iOS maître et le périphérique Bluetooth basse énergie.

J'ai trouvé que dans Android, nous obtenons toutes les informations du périphérique, y compris son adresse MAC (à l'aide de getAddress ()), lorsque nous obtenons la réponse du périphérique lors de l'analyse.

Je n'ai trouvé aucune propriété dans la classe CBPeripheral liée à l'adresse du périphérique. Un autre moyen d'obtenir un paramètre unique serait de personnaliser les données de publication pour envoyer des informations supplémentaires concernant le périphérique, ce qui nécessite davantage de travail du côté du microprogramme.

Donc, y a-t-il un moyen dans iOS de pouvoir obtenir l'adresse MAC du périphérique Bluetooth à faible énergie sans établir de connexion?

Toute aide serait grandement appréciée.


Au nom de la discussion des autres professionnels, j'ai trouvé des faits qui disent -

IOS masque l'adresse MAC du périphérique et génère un UUID. L'UUID sur iOS est généré par le périphérique iOS. Différents appareils iOS obtiendront différents UUID pour le même périphérique. L'adresse MAC est généralement basée sur le matériel. Si nous avons tous les deux un iPhone et numérisons le même périphérique, nous verrons des UUID différents. iOS génère l'UUID sur le périphérique et masque l'adresse MAC. Résumé - iOS ne vous permet pas d'obtenir l'adresse MAC d'un périphérique, il vous donne plutôt un UUID aléatoire.

Source - https://github.com/don/cordova-plugin-ble-central/issues/77

Selon l’étude ci-dessus, j’ai trouvé qu’il n’existait pas de moyen aussi unique de se connecter au tableau. Chaque tableau a une adresse MAC qui ne change pas et qui est facile d’accès à (uniquement) Android, tandis qu’iOS ne le fait pas. t autoriser l’accès à l’adresse MAC du périphérique, mais iOS utilise cette adresse MAC pour créer un identificateur de périphérique (UUID), qui est unique sur un périphérique (unique) uniquement. L'identificateur de périphérique d'une carte unique est différent pour différents appareils iPhone (mais unique sur un seul appareil).

Cependant, nous pouvons nous connecter à un tableau en effectuant une recherche avec l’UUID du service Bluetooth de Peripheral, mais cet UUID de service est identique pour tous les forums d’un type dit «Adafruit Feather M0». Cela signifie que l'APP recherchera les cartes BLE du même type («Adafruit Feather M0») et se connectera à TOUTES celles-ci. Pour pouvoir se connecter à un utilisateur particulier à un forum spécifique, cela ne semble pas possible jusqu'à présent en raison de l'inaccessibilité de MAC et de la définition de l'UUID aléatoire dans iOS.


Il n'y a pas d'API publique pour obtenir cette information.

S'il s'agit d'une application interne ou d'une application jailbreak, vous pouvez obtenir la valeur de la clé liblockdown.dylib via liblockdown.dylib


Les périphériques à faible consommation d’énergie peuvent utiliser la fonctionnalité de confidentialité qui masque l’adresse MAC. Il n’est donc pas forcément possible d’obtenir l’adresse avant la connexion ou la liaison. Si vous obtenez d’une manière ou d’une autre l’adresse MAC par liaison radio, vous devez gérer la confidentialité ou vous avez des problèmes d’interopérabilité.

Apple utilise des UUID pour extraire ces fonctionnalités de confidentialité afin que les utilisateurs n'aient pas à s'en soucier.

La façon correcte de procéder, comme vous l'avez écrit, consiste à ajouter des données spécifiques au fournisseur dans le paquet de publication ou à utiliser le service Informations sur le périphérique.





bluetooth-lowenergy