Bluetooth v Android a iOS aplikacích: možnosti, knihovny a nástrahy
Mobil jako klíč, displej zdravotního snímače nebo pokladna s tiskárnou. Bluetooth propojí aplikaci s fyzickým světem, ale spolehlivý provoz vyžaduje víc než první úspěšné připojení. Jak se liší Android a iOS, které knihovny pomohou a na co myslet u starších telefonů?

Telefon může odemykat dveře, zobrazovat měření ze snímače nebo posílat účtenky do tiskárny. Uživatel očekává jednoduché ovládání; aplikace přitom musí zvládnout oprávnění, výpadky spojení i rozdíly mezi telefony.
Nejdůležitější je ověřit skutečný hardware na Androidu i iOS ještě před vývojem celé aplikace. Samotné označení „Bluetooth“ kompatibilitu nezaručuje. Následující přehled se věnuje komunikaci se senzory, zámky a dalším příslušenstvím, nikoli přenosu zvuku.
BLE, nebo Bluetooth Classic?
Pro nový senzorový produkt bývá první volbou Bluetooth Low Energy (BLE), určené pro úspornou komunikaci. Při běžné komunikaci přes GATT (Generic Attribute Profile, tedy pravidla pro uspořádání a výměnu dat mezi zařízeními) aplikace například čte teplotu nebo zapisuje příkaz k odemknutí. Jak funguje BLE.
Bluetooth Classic se používá například u starších tiskáren se sériovým profilem SPP. Zařízení, které funguje s Androidem, ale nemusí stejným způsobem fungovat s iPhonem.
| Co porovnáváme | BLE | Classic se sériovým profilem SPP |
|---|---|---|
| Typické použití | Snímače, zámky, nastavení zařízení | Některé tiskárny a starší příslušenství |
| Android | Běžně podporované | Podporované přes příslušné rozhraní |
| iOS | Běžně podporované přes Core Bluetooth | Bez obecného přístupu k libovolnému SPP zařízení |
| Co ověřit | Protokol výrobce a požadované funkce | Především konkrétní podporu iOS |
Na iOS existují i další cesty pro kompatibilní příslušenství, například External Accessory a program MFi. Pro běžné BLE připojení samotné MFi potřeba není. Rozhoduje konkrétní zařízení a dokumentace výrobce. Připojování na Androidu, příslušenství a BLE na iOS.
Naše aplikace, které komunikují přes Bluetooth
Jde o výběr našich Bluetooth projektů, nikoli úplný seznam. Ne všechny realizace můžeme veřejně představit.
- OxiControl — Android. Připojení k podporovanému pulznímu oxymetru, zobrazení saturace kyslíkem a tepu, ukládání hodnot a alarmy.
- Thermeeno — Android. Záznam teploty ze snímačů, historie měření, podpora více snímačů a upozornění na delší ztrátu spojení.
- Star E-key a STAR Smart Master — iOS. Mobil jako elektronický klíč pro chytré kliky a zámky. Vzdálenou správu systému zajišťují také samostatné gateway moduly.
- Conto Mobile — Android. Pokladní aplikace s tiskem účtenek na Bluetooth tiskárně. Starší projekt z období EET ukazuje propojení s pokladním příslušenstvím.
Každý scénář potřebuje jinou odezvu: u snímače čas posledního měření, u zámku potvrzení odemknutí, u tiskárny informaci o výsledku tisku. Pouhé hlášení „připojeno“ uživateli nestačí.
Starší Androidy: proč aplikace zařízení nevidí
Bluetooth je zapnuté a snímač leží vedle telefonu, přesto ho aplikace nenajde. Na starších Androidech může chybět oprávnění k poloze nebo zapnutá služba určování polohy. Důvodem je možnost odvodit polohu z nalezených Bluetooth zařízení. Souvislost popisuje také RxAndroidBle.
| Android v telefonu | Na co dát pozor při běžném BLE vyhledávání |
|---|---|
| Android 6–9 | Oprávnění k poloze a zapnutá služba určování polohy |
| Android 10–11 | Přesná poloha u aplikací cílících na API 29+; další požadavky při hledání na pozadí |
| Android 12 a novější | U aplikací cílících na API 31+ samostatná oprávnění pro vyhledávání a připojení k okolním zařízením |
Záleží tedy na systému telefonu i na verzi systému, na kterou aplikace cílí. Konkrétní nastavení musí ověřit vývojář. Aktuální přehled oprávnění Androidu.
Dobrá aplikace vysvětlí, co chybí a jak to napravit. Odmítnuté oprávnění, vypnuté Bluetooth a zařízení mimo dosah vyžadují odlišné pokyny. Při testování proto doporučujeme zahrnout i starší telefony skutečných uživatelů.
Co se stane po zamknutí telefonu
Požadavek „měřit i se zamčeným telefonem“ řešte už v zadání. Android ani iOS nedávají aplikaci neomezený běh na pozadí.
Android nabízí služby a mechanismy pro dlouhodobé spojení s příslušenstvím, jejich spuštění ale podléhá omezením. iOS umí aplikaci probouzet kvůli Bluetooth událostem; nejde o nepřetržitý běh libovolného kódu. Po vynuceném ukončení aplikace uživatelem nelze běžnou obnovu spojení slibovat. Možnosti Androidu, pravidla obnovení na iOS.
U průběžného měření doporučujeme zobrazovat čas posledních dat a jasně označit výpadek. Pokud to snímač podporuje, může měření ukládat a předat později. Poslední známá hodnota pak nebude působit jako právě naměřená.
Spolehlivé připojení potřebuje víc než první úspěšný pokus
Při návrhu doporučujeme vyřešit tři situace:
- Návrat do dosahu. Aplikace má spojení rozumně obnovit a nabídnout pomoc, pokud se to nepodaří.
- Potvrzení výsledku. Odeslaný příkaz ještě nemusí znamenat skutečně odemčený zámek nebo vytištěnou účtenku.
- Změnu telefonu či firmwaru. Aktualizované příslušenství je potřeba ověřit i s telefonem, který se k němu připojoval dříve.
Vývojář řeší pořadí operací, časové limity a chyby spojení. Knihovny s tím pomáhají, testování na reálném hardwaru však nenahradí. Příklad možností knihovny Nordic.
Knihovny pro Bluetooth komunikaci
Pro orientaci uvádíme běžné možnosti. Nejde o seznam knihoven použitých ve všech našich referencích. Při výběru posuzujeme podporované funkce, údržbu a licenci.
| Platforma | Knihovna nebo rozhraní | K čemu slouží |
|---|---|---|
| Android | Nordic Android BLE Library, RxAndroidBle | Řízení BLE spojení a datových operací |
| iOS | Core Bluetooth | Rozhraní Applu pro komunikaci přes GATT |
| Kotlin Multiplatform | Kable | Sdílená práce s BLE v Kotlinu |
Bluetooth lze použít i v multiplatformní aplikaci. Knihovna ale neodstraní rozdíly v oprávněních, běhu na pozadí ani podporovaném příslušenství. V Kotlin Multiplatform lze sdílet například zpracování dat a část komunikace; potřebné systémové části se nastavují zvlášť.
Širší souvislosti najdete v porovnání platforem pro vývoj aplikací.
Co nám připravit před vývojem
Nejvíc nejistoty odstraní malý prototyp se skutečným příslušenstvím. Pro začátek potřebujeme:
- Hardware: konkrétní model a zařízení pro testování.
- Dokumentaci komunikace: pokud je k dispozici, popis protokolu, formátu zpráv, příkazů a odpovědí. Pomohou také knihovny nebo ukázkový kód výrobce.
- Telefony: Android, iOS a požadovanou podporu starších modelů.
- Použití: co má aplikace dělat, kolik zařízení připojí a zda má pracovat na pozadí.
- Výpadky: co se má stát při ztrátě signálu, vybití snímače nebo restartu telefonu.
- Zabezpečení: kdo smí zařízení ovládat a jaká data bude přenášet.
U aplikací s příslušenstvím připravíme také způsob předvedení pro kontrolu obchodu. Zkušenost s chytrým zámkem popisujeme v článku o schvalování v App Store.
Máte zařízení a představu, co má aplikace umět? Napište nám. Pomůžeme ověřit kompatibilitu a navrhnout spolehlivé používání.
Studio pro návrh a vývoj mobilních aplikací a webů. Píšeme o tom, co sami řešíme s klienty.
