Cadrul de bază Bluetooth (CB) furnizează resursele necesare pentru ca aplicațiile iOS să poată comunica cu dispozitivele echipate cu tehnologia Bluetooth cu energie redusă (BTLE). Acest tutorial vă va ghida prin evoluția CB de la iOS 5 la iOS 7. În plus, veți învăța cum să configurați o centrală Bluetooth centrală și periferică, cum să comunicați între ele și unele bune practici de programare.
Core tutorialele Bluetooth sunt împărțite în două secțiuni. Primul acoperă aspectul teoretic al tehnologiei Bluetooth Core, în timp ce al doilea servește ca o lecție practică completă. Aici veți găsi codul sursă complet pentru tutorialul practic, plus un proiect de pornire suplimentar.
BTLE se bazează pe specificația Bluetooth 4.0, care, printre altele, definește un set de protocoale pentru comunicarea între dispozitivele cu consum redus de energie. În BTLE există două profiluri:
Următoarea imagine prezintă un dispozitiv central și unul periferic:
Fiecare "profil" reprezintă un obiect iOS echivalent, și anume CBCentralManager
si CBPeripheral
.
După cum sa afirmat anterior, CBCentralManager
gestionează dispozitive periferice descoperite sau conectate la distanță (CBPeripheral
). De îndată ce CBCentralManager
se conectează la o periferică, interacțiunea cu datele sale începe. Datele stocate în periferice sunt organizate într-un arbore ierarhic bazat pe serviciile și caracteristicile sale.
Aceste servicii pot fi Alert Service Notification
, Tensiune arteriala
, Ritm cardiac
, etc lista oficială a GATT
specificațiile de servicii pot fi găsite pe această pagină.
Caracteristica unui serviciu în practică este valoarea serviciului. În acest tutorial, Tensiune arteriala
serviciul este valoarea tensiunii arteriale la un anumit moment. Următoarea figură ilustrează un periferic personalizat, cu un serviciu și două caracteristici.
În Core Bluetooth, sunt reprezentate serviciile unei periferice la distanță CBService
obiecte. În mod similar, sunt reprezentate caracteristicile unui serviciu periferic la distanță CBCharacteristic
obiecte. Următoarea figură ilustrează structura ierarhică a CBService
periferic.
Un periferic dat poate avea mai multe servicii și caracteristici multiple pentru fiecare serviciu. Nu există un număr de limită specific pentru fiecare dintre acestea.
Rețineți că trebuie să citiți și să învățați referința oficială Core Bluetooth Framework Reference pentru a obține o înțelegere completă a acestei tehnologii.
Core Bluetooth Framework a apărut în iOS 5 și a introdus o nouă modalitate de comunicare între dispozitivele care utilizează tehnologia fără fir Bluetooth. În timpul fiecărei versiuni de iOS, Apple îmbunătățește și adaugă noi caracteristici la Core Bluetooth.
În iOS 5, principalele caracteristici Core Bluetooth au fost CBCentralManager
, CBPeripheral
, Central, Client și Observator. În această versiune au existat doar două clase: CBCentralManager
și CBPeripheral
. Prima clasă a fost concepută pentru a descoperi și conecta mai multe periferice (limitate). A doua clasă a fost responsabilă de vizualizarea unui dispozitiv și a creat un mecanism care a permis centrului să acceseze datele disponibile pentru serviciile de la distanță.
În iOS 6, Apple a introdus mai multe caracteristici și îmbunătățiri Core Bluetooth, inclusiv CBPeripheralManager
, Baze de date cache pentru baze de date periferice, radiodifuzor, periferic și server. Principala caracteristică a fost Server
rol. A permis dezvoltatorilor să creeze și să specifice servicii personalizate. In plus CBPeripheralManager
a introdus o modalitate personalizată de a crea servicii și mecanisme care să definească modul în care sunt promovate informațiile în rețea. În plus, cache-ul bazei de date periferice a îmbunătățit foarte mult performanța generală Bluetooth (mai ales în faza de descoperire).
După câțiva ani de colectare de feedback, Apple a îmbunătățit cadrul Bluetooth în iOS 7 cu următoarele caracteristici:
Dacă doriți să începeți să jucați cu dezvoltarea BTLE, trebuie să aveți în vedere următoarele considerații:
Definirea modului în care o aplicație reacționează la o stare de fundal sau la un popas este crucială. Fiecare aplicație trebuie să se comporte diferit atât în fundal, cât și în prim-plan, deoarece resursele sistemului sunt limitate. În mod implicit, multe dintre sarcinile comune ale CB (atât pe bază centrală, cât și periferică) sunt dezactivate în timp ce aplicația se află în fundal sau într-o stare suspendată. Cu toate acestea, puteți declara aplicația dvs. să accepte modurile principale de execuție a fundalului Bluetooth pentru a permite trecerea acesteia din starea suspendată pentru a procesa anumite evenimente.
Rețineți că, chiar dacă aplicația dvs. acceptă unul sau ambele moduri de execuție a fundalului CB, nu poate funcționa pentru totdeauna. Într-un anumit moment, este posibil ca sistemul să trebuiască să vă închidă aplicația pentru a elibera memoria pentru aplicația curentă din prim-plan, deoarece iOS este suveran în gestionarea memoriei. Cu toate acestea, Core Bluetooth suportă salvarea informațiilor de stare pentru obiectele managerului central și periferic și restaurarea acelei stări la ora de lansare a aplicației.
Dacă aplicația dvs. nu acceptă activități de fundal, toate evenimentele Bluetooth care apar atunci când aplicația se află într-o stare suspendată sunt plasate în așteptare de către sistem și lansate în aplicație atunci când este vorba despre starea pop-la-stânga. Aceste alerte pot fi definite atunci când sunați connectPeripheral: opțiuni:
metodă a CBCentralManager
atunci când se face o conexiune la periferic. Există trei tipuri de alerte:
CBConnectPeripheralOptionNotifyOnConnectionKey
când doriți ca sistemul să afișeze o avertizare pentru un anumit periferic dacă aplicația este suspendată atunci când se realizează o conexiune de succes.CBConnectPeripheralOptionNotifyOnDisconnectionKey
când doriți ca sistemul să afișeze o avertizare de deconectare pentru o anumită periferică dacă aplicația este suspendată în momentul deconectării.CBConnectPeripheralOptionNotifyOnNotificationKey
când doriți ca sistemul să afișeze o alertă pentru toate notificările primite de la un anumit dispozitiv periferic dacă aplicația este suspendată în acel moment.Pe de altă parte, dacă aplicația dvs. acceptă modul de fundal, trebuie să o declarați (UIBackgroundModes
) din fișierul cu lista de proprietăți (Info.plist). Când aplicația dvs. declară acest lucru, sistemul se trezește din starea suspendată pentru a permite gestionarea evenimentelor Bluetooth. Acest suport este important pentru aplicațiile care interacționează cu dispozitive Bluetooth cu consum redus de energie care furnizează date la intervale regulate, cum ar fi un monitor de frecvență cardiacă. Există două roluri de fundal: una pentru dispozitivele centrale și una pentru periferice.
CBCentralManager
În ciuda faptului că cadrul central Bluetooth face multe dintre tranzacțiile centrale transparente pentru aplicația dvs., există mai multe opțiuni pe care trebuie să le luați în considerare la dezvoltarea unei aplicații Bluetooth. Deoarece aveți de-a face cu dispozitive cu consum redus de energie, trebuie să vă amintiți că fiecare operațiune scade energia de la dispozitivul dvs. Bluetooth.
Prin urmare, trebuie să țineți cont de următoarele:
scanForPeripheralsWithServices: Opțiuni:
metodă pentru a preveni acest lucru, astfel încât toate reclamele de la un dispozitiv specific sunt tratate ca unul. Cu toate acestea, puteți utiliza CBCentralManagerScanOptionAllowDuplicatesKey
dacă doriți să primiți mai multe anunțuri de pe același dispozitiv.CBPeripheral
Similar cu CBCentralManager
rol, CBPeripheral
are câteva practici care ar trebui urmate pentru a crea o aplicație Bluetooth eficientă.
În ceea ce privește publicitatea, rețineți că atunci când aplicația dvs. se află în prim plan, aceasta poate utiliza până la 28 de octeți de spațiu în datele de publicitate inițiale. Fiți conștienți de faptul că trebuie doar să faceți publicitate datelor care contează, nu numai pentru problemele legate de performanță, ci și pentru a menține canalul curat. De asemenea, ar trebui să oferiți utilizatorului o modalitate de a face publicitate așa cum doriți, astfel încât utilizatorul să aibă o modalitate de a controla frecvența publicității.
De asemenea, atunci când vă configurați caracteristicile, trebuie să le activați pentru a accepta notificările. Pentru a realiza acest lucru, trebuie să adăugați CBAttributePermissionsReadable
proprietate la permisiuni
în CBMutableCharacteristic
obiect.
Fiți conștienți de faptul că, deoarece tehnologia Bluetooth este o tehnologie emergentă, tot mai multe dispozitive o folosesc și încearcă să smulgă rețeaua pentru a accesa datele "gratuite". Din această cauză, trebuie să aveți întotdeauna nevoie de o conexiune asociată pentru a accesa datele sensibile ale dispozitivului dvs. periferic.
După ce ați citit acest tutorial, trebuie să înțelegeți specificațiile de bază pentru tehnologia Bluetooth. În următorul tutorial, veți afla cum să programați a CBCentralManager
și CBPeripheral
.
Dacă aveți întrebări sau comentarii, lăsați-le mai jos!