La structure Core Bluetooth (CB) fournit les ressources nécessaires aux applications iOS pour communiquer avec les périphériques équipés de la technologie Bluetooth Low Energy (BTLE). Ce tutoriel vous guidera à travers l'évolution de CB d'iOS 5 à iOS 7. De plus, vous apprendrez à configurer un central et un périphérique Bluetooth central, à communiquer entre eux et à connaître les meilleures pratiques de programmation..
Les didacticiels Core Bluetooth sont divisés en deux sections. Le premier traite de l'aspect théorique de Core Bluetooth, le second sert de cours pratique complet. Vous trouverez ici le code source complet du didacticiel, ainsi qu'un projet de démarrage supplémentaire..
BTLE est basé sur la spécification Bluetooth 4.0, qui définit notamment un ensemble de protocoles pour la communication entre des périphériques basse consommation. Dans BTLE, il existe deux profils:
L'image suivante montre un périphérique central et un périphérique:
Chaque "profil" représente un objet iOS équivalent, à savoir le CBCentralManager
et le CBPériphérique
.
Comme indiqué précédemment, le CBCentralManager
gère les périphériques distants découverts ou connectés (CBPériphérique
). Aussi tôt que le CBCentralManager
se connecte à un périphérique, l'interaction avec ses données commence. Les données stockées dans les périphériques sont organisées dans une arborescence hiérarchique basée sur ses services et caractéristiques..
Ces services peuvent être Service de notification d'alerte
, Tension artérielle
, Rythme cardiaque
, etc. La liste officielle des GATT
les spécifications de services se trouvent sur cette page.
La caractéristique d'un service dans la pratique est la valeur du service. Dans ce tutoriel, le Tension artérielle
service est la valeur de la pression artérielle à un moment donné. La figure suivante illustre un périphérique personnalisé avec un service et deux caractéristiques.
Dans Core Bluetooth, les services d’un périphérique distant sont représentés par CBService
objets. De même, les caractéristiques d’un service de périphériques distants sont représentées par CBCharactéristique
objets. La figure suivante illustre la structure hiérarchique d’un CBService
périphérique.
Un périphérique donné peut avoir plusieurs services et plusieurs caractéristiques pour chaque service. Il n'y a pas de nombre limite spécifique pour chacun.
Notez que vous devez lire et apprendre la référence officielle du cadre Bluetooth pour comprendre parfaitement cette technologie..
Le Core Bluetooth Framework est apparu dans iOS 5 et a introduit un nouveau moyen de communication entre périphériques utilisant la technologie sans fil Bluetooth. Au cours de chaque version iOS, Apple améliore et ajoute de nouvelles fonctionnalités à Core Bluetooth.
Dans iOS 5, les principales fonctionnalités Bluetooth de base étaient les suivantes: CBCentralManager
, CBPériphérique
, Central, Client et Observateur. Dans cette version seulement deux classes existaient, le CBCentralManager
et CBPériphérique
. La première classe a été conçue pour découvrir et connecter plusieurs périphériques (limités). La deuxième classe était responsable de la visualisation d'un appareil et créait un mécanisme permettant à la centrale d'accéder aux données disponibles sur les services distants..
Dans iOS 6, Apple a introduit plusieurs fonctionnalités et améliorations Bluetooth principales, notamment: CBPeripheralManager
, Mise en cache, base de données, périphérique et serveur de la base de données périphérique. La principale caractéristique était la Serveur
rôle. Il permettait aux développeurs de créer et de spécifier des services personnalisés. De plus, le CBPeripheralManager
introduit un moyen personnalisé de créer des services et des mécanismes qui définissent la manière dont les informations sont publiées sur le réseau. En outre, la mise en cache de la base de données périphérique a considérablement amélioré les performances générales de Bluetooth (en particulier dans la phase de découverte)..
Après quelques années de collecte de commentaires, Apple a affiné le framework Bluetooth sous iOS 7 avec les fonctionnalités suivantes:
Si vous souhaitez commencer à jouer avec le développement de BTLE, vous devez tenir compte des considérations suivantes:
Définir la manière dont une application réagit à un arrière-plan ou à un état au premier plan est crucial. Chaque application doit se comporter différemment en arrière-plan et en avant-plan car les ressources système sont limitées. Par défaut, de nombreuses tâches CB courantes (sur le périphérique central et sur le périphérique) sont désactivées lorsque votre application est en arrière-plan ou dans un état suspendu. Toutefois, vous pouvez déclarer que votre application prend en charge les modes d'exécution en arrière-plan Core Bluetooth afin de lui permettre de sortir d'un état suspendu pour traiter certains événements..
Notez que même si votre application prend en charge l'un ou l'autre des modes d'exécution en arrière-plan du disjoncteur, elle ne peut pas s'exécuter indéfiniment. À un moment donné, le système peut avoir besoin de mettre fin à votre application pour libérer de la mémoire pour l'application de premier plan actuelle, car iOS est souverain dans la gestion de la mémoire. Néanmoins, Core Bluetooth prend en charge la sauvegarde des informations d'état pour les objets du gestionnaire central et des gestionnaires de périphériques et la restauration de cet état au moment du lancement de l'application..
Si votre application ne prend pas en charge les activités en arrière-plan, tous les événements Bluetooth qui se produisent lorsque l'application est suspendue sont mis en file d'attente par le système et déclenchés vers l'application lorsqu'il est au premier plan. Ces alertes peuvent être définies lors de l'appel du connectPeripheral: options:
méthode du CBCentralManager
classe lorsqu’une connexion au périphérique est établie. Il existe trois types d'alertes:
CBConnectPeripheralOptionNotifyOnConnectionKey
lorsque vous souhaitez que le système affiche une alerte pour un périphérique donné si l'application est suspendue lorsqu'une connexion est établie.CBConnectPeripheralOptionNotifyOnDisconnectionKey
lorsque vous souhaitez que le système affiche une alerte de déconnexion pour un périphérique donné si l'application est suspendue au moment de la déconnexion.CBConnectPeripheralOptionNotifyOnNotificationKey
lorsque vous souhaitez que le système affiche une alerte pour toutes les notifications reçues d'un périphérique donné si l'application est suspendue à ce moment.Par contre, si votre application prend en charge le mode d’arrière-plan, vous devez le déclarer (UIBackgroundModes
) dans le fichier de liste de propriétés (Info.plist). Lorsque votre application le déclare, le système le sort de l'état suspendu pour lui permettre de gérer les événements Bluetooth. Cette assistance est importante pour les applications qui interagissent avec des périphériques Bluetooth basse consommation qui transmettent des données à intervalles réguliers, tels qu'un moniteur de fréquence cardiaque. Il y a deux rôles de base: l'un pour les périphériques centraux et l'autre pour les périphériques..
CBCentralManager
Bien que la structure Bluetooth centrale rende transparente la plupart des transactions centrales pour votre application, vous devez prendre en compte plusieurs options lors du développement d'une application Bluetooth. Étant donné que vous utilisez des appareils basse consommation, n'oubliez pas que chaque opération draine de l'énergie de votre appareil Bluetooth..
Par conséquent, vous devez prendre en compte les éléments suivants:
scanForPeripheralsWithServices: options:
méthode pour empêcher cela afin que toutes les publicités d'un périphérique spécifique soient traitées comme une seule. Cependant, vous pouvez utiliser le CBCentralManagerScanOptionAllowDuplicatesKey
option si vous souhaitez recevoir plusieurs annonces du même appareil.CBPériphérique
Semblable à la CBCentralManager
rôle, le CBPériphérique
a certaines pratiques à suivre pour créer une application Bluetooth efficace.
En ce qui concerne la publicité, n'oubliez pas que lorsque votre application est au premier plan, elle peut utiliser jusqu'à 28 octets d'espace dans les données de publicité initiale. Sachez que vous ne devez publier que des données qui comptent vraiment, non seulement pour des problèmes de performances, mais également pour que le canal reste propre. En outre, vous devez offrir à l'utilisateur un moyen de publier ses annonces à sa guise, de manière à lui permettre de contrôler la fréquence de ses annonces..
De même, lorsque vous configurez vos caractéristiques, vous devez les activer pour prendre en charge les notifications. Pour ce faire, vous devez ajouter le CBAttributePermissionsReadable
propriété à la autorisations
dans le CBMutableCharacteristic
objet.
Sachez que Bluetooth étant une technologie émergente, de plus en plus de périphériques l'utilisent et essaient de renifler le réseau pour accéder à des données "gratuites". Pour cette raison, vous devez toujours exiger une connexion appariée pour accéder aux données sensibles de votre périphérique..
Après avoir lu ce didacticiel, vous devez comprendre les spécifications de l’infrastructure Core Bluetooth. Dans le prochain tutoriel, vous apprendrez à programmer un CBCentralManager
et CBPériphérique
.
Si vous avez des questions ou des commentaires, veuillez les laisser ci-dessous!