Bluetooth Low Energy (BLE) a mobilfejlesztésben: mi ez, protokollok és hogyan működik

Szerző: IT Sectr Megjelenés: 2026-07-25 Olvasási idő: 11 perc

A Bluetooth Low Energy (BLE) egy vezeték nélküli kommunikációs szabvány, amelyet kis adatmennyiségek minimális energiafogyasztással történő továbbítására optimalizáltak. A Bluetooth SIG, 2025 szerint a technológiát világszerte több mint 5 milliárd eszközben használják. A GATT (Generic Attribute Profile) az adatokat Service → Characteristic → Descriptor hierarchiába szervezi, amely az összes iOS és Android BLE-alkalmazás alapját képezi.

Főbb Pontok

  • GATT — adatcsere-protokoll a Bluetooth Low Energy-ben Service → Characteristic → Descriptor hierarchiával
  • Core Bluetooth — az Apple keretrendszere a BLE-vel való munkához iOS-en, a CBCentralManager és CBPeripheral alapokon
  • BluetoothGatt — a fő API a BLE-kapcsolatokhoz Androidon a BluetoothLeScanner-en keresztül
  • iBeacon — az Apple BLE-jeladó protokollja natív támogatással a CLLocationManager-en keresztül iOS-en
  • Bonding — állandó titkosított kapcsolat, amely kiküszöböli az ismételt szkennelést és párosítást

Mi az a Bluetooth Low Energy (BLE) és hogyan működik?

A Bluetooth Low Energy (BLE) kliens-szerver modellben működik két szerepkörrel: Central (mobil eszköz) és Peripheral (eszköz). A Central pásztázza az adást és kezdeményezi a kapcsolatot, míg a Peripheral adatokat továbbít. A klasszikus Bluetooth-tal ellentétben a BLE nem hangfolyamokhoz készült — feladata kis csomagok továbbítása minimális energiafogyasztással. A Bluetooth SIG Core Specification 5.4 (2025) szerint a BLE akár 2 Mbps sebességet is támogat 15 mA-nél kisebb áramfelvétellel aktív módban.

GATT hierarchia: Service, Characteristic, Descriptor

A GATT (Generic Attribute Profile) meghatározza a Bluetooth Low Energy adatszerkezetét. A Service a jellemzők logikai csoportja (például Heart Rate Service 0x180D). A Characteristic egy adatpont meghatározott értékkel. A Descriptor a jellemző metaadata, beleértve a CCCD-t az értesítések kezeléséhez. Minden elemhez UUID tartozik — 16 bites a szabványos Bluetooth SIG profilokhoz vagy 128 bites az egyedihez.

A Bluetooth Low Energy a mobilalkalmazásokban ezt a hierarchiát használja az okostelefon és a perifériák közötti adatcsere megszervezéséhez. A GATT helyes megértése a BLE-alkalmazások fejlesztésének alapja mindkét platformon. A fejlesztőnek ismernie kell az eszköz szolgáltatásainak és jellemzőinek UUID-it, valamint az egyes jellemzők tulajdonságait (read, write, notify, indicate).

Advertising Data és Scan Response

A BLE-eszközök reklámcsomagokat (advertising packets) továbbítanak a felderítéshez. Az Advertising Data tartalmazza az eszköz nevét, a szolgáltatások UUID-it, az RSSI-t és a Manufacturer Specific Data-t. A reklámcsomag mérete 31 bájtra korlátozódik. További adatok továbbításához a Scan Response-t használják — egy második csomagot, amelyet a központi eszköz a felderítés után kér.

BLE iOS-en: Core Bluetooth, CBCentralManager, CBPeripheral

iOS-en a Core Bluetooth keretrendszer kezeli a Bluetooth Low Energy-t. A CBCentralManager a szkennelést és a kapcsolatot kezeli, a CBPeripheral egy távoli BLE-eszközt képvisel. A folyamat szabványos: a CBCentralManager inicializálása, a poweredOn állapot ellenőrzése, a scanForPeripherals elindítása, csatlakozás és szolgáltatások felderítése. A Core Bluetooth automatikusan kezeli a rádiómodul tápellátását — ha a BLE nincs használatban, kikapcsol.

A BLE a mobilfejlesztésben iOS-en megköveteli a háttérmódok figyelembevételét. A Core Bluetooth háttérmód a projekt Capabilities (Uses Bluetooth LE accessories) részén keresztül kapcsolható be. Háttérben az alkalmazás fogadhat értesítéseket a jellemzőktől, de a szkennelés korlátozott — a rendszer csak akkor indítja újra, ha az eszköz mozog. Az iBeacon esetében a háttér-szkennelés aktívabban működik a CLLocationManager-en keresztül.

BLE szkennelés példa Swift-ben

swift
import CoreBluetooth

class DeviceScanner: NSObject, CBCentralManagerDelegate {
    var centralManager: CBCentralManager!

    func start() {
        centralManager = CBCentralManager(delegate: self, queue: nil)
    }

    func centralManagerDidUpdateState(_ central: CBCentralManager) {
        guard central.state == .poweredOn else { return }
        central.scanForPeripherals(withServices: nil, options: nil)
    }

    func centralManager(_ central: CBCentralManager,
                        didDiscover peripheral: CBPeripheral,
                        advertisementData: [String: Any],
                        rssi RSSI: NSNumber) {
        print("Találat: \(peripheral.name ?? "unknown")")
    }
}

Ebben a példában a CBCentralManagerDelegate kezeli az összes BLE-kapcsolati eseményt. A centralManagerDidUpdateState metódus ellenőrzi, hogy a Bluetooth be van-e kapcsolva a mobileszközön. Sikeres inicializálás után a szkennelés elindul. A didDiscover callback minden megtalált eszköznél meghívódik.

Csatlakozás és jellemzők olvasása a Core Bluetooth-ban

Egy eszköz felderítése után meg kell hívni a connect és discoverServices függvényeket. A CBPeripheralDelegate metódusokat biztosít az egyes lépések kezeléséhez: didDiscoverServices, didDiscoverCharacteristics, didUpdateValueFor. Minden metódus aszinkron — az adatok delegált callback-eken keresztül érkeznek. Az RSSI (Received Signal Strength Indicator) a jelerősséget mutatja: minél közelebb van az érték a 0-hoz, annál erősebb a jel.

BLE Androidon: BluetoothAdapter, BluetoothGatt, BluetoothLeScanner

Androidon a Bluetooth Low Energy az android.bluetooth csomagon keresztül van megvalósítva. A BluetoothAdapter a belépési pont az összes BLE-művelethez. A BluetoothLeScanner elindítja a szkennelést ScanCallback callback-ekkel. Egy eszköz felderítése után létrejön a BluetoothGatt — egy kapcsolat a perifériához. A BluetoothGattCallback kezeli az eseményeket: csatlakozás, szolgáltatások felderítése, jellemzők olvasása, RSSI-változások.

A Bluetooth Low Energy a mobilalkalmazásokban Androidon explicit BLUETOOTH_SCAN, BLUETOOTH_CONNECT és ACCESS_FINE_LOCATION engedélyeket igényel. Az Android 12-től az engedélyek külön vannak választva: BLUETOOTH_SCAN a szkenneléshez, BLUETOOTH_CONNECT a csatlakozáshoz. Az ACCESS_FINE_LOCATION csak bizonyos típusú eszközök szkenneléséhez szükséges. Ezen engedélyek nélkül az alkalmazás nem tud BLE-vel működni.

BLE szkennelés példa Kotlin-ban

kotlin
class BLEScanner(private val bluetoothAdapter: BluetoothAdapter) {

    fun startScan() {
        val scanner = bluetoothAdapter.bluetoothLeScanner
        val settings = ScanSettings.Builder()
            .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
            .build()
        scanner.startScan(null, settings, scanCallback)
    }

    private val scanCallback = object : ScanCallback() {
        override fun onScanResult(callbackType: Int, result: ScanResult) {
            val device = result.device
            val rssi = result.rssi
            Log.d("BLE", "Eszköz: ${device.name}, RSSI: $rssi")
        }
    }
}

A ScanSettings lehetővé teszi a szkennelési mód konfigurálását: LOW_POWER az akkumulátor kíméléséhez, BALANCED a szabványos feladatokhoz, LOW_LATENCY a maximális felderítési sebességhez. A ScanFilter szűkíti a keresést szolgáltatás UUID, eszköznév vagy MAC-cím alapján. A szűrés csökkenti az energiafogyasztást és felgyorsítja a kívánt eszköz felderítését.

BluetoothGatt: olvasás és értesítések Androidon

A BluetoothGatt connectGatt-on keresztüli létrehozása után az alkalmazás meghívja a discoverServices-t. A BluetoothGattCallback tartalmazza az onServicesDiscovered, onCharacteristicRead, onCharacteristicChanged függvényeket. A jellemzőváltozásokról szóló értesítések fogadásához meg kell hívni a setCharacteristicNotification-t. A folyamat figyelmet igényel: minden GATT-művelet aszinkron, és az eredmény egy külön callback-ben érkezik.

iBeacon, Bonding és Advertising Data a BLE ökoszisztémában

Az iBeacon az Apple technológiája a BLE-jeladókhoz, amelyek UUID-t, Major-t és Minor-t továbbítanak. A jeladó eszköz reklámcsomagot sugároz, és a mobilalkalmazás ezen adatok alapján határozza meg a helyzetet és távolságot. iOS-en az iBeacon natívan támogatott a CLLocationManager-en keresztül. Androidon harmadik féltől származó könyvtárra van szükség (például AltBeacon vagy Android iBeacon Library).

A Bonding egy állandó biztonságos kapcsolat létrehozásának eljárása a BLE-eszközök között. A Bonding után a titkosítási kulcsok elmentésre kerülnek, és az eszközök automatikusan csatlakoznak, amikor ismét közel kerülnek egymáshoz. iOS-en a bonding-ot a rendszer automatikusan kezeli. Androidon — a BluetoothDevice.createBond()-on keresztül. A Bonding fontos a viselhető eszközök és fitneszkövetők számára, amelyek gyors újracsatlakozást igényelnek.

Reklámcsomagok és Manufacturer Specific Data

Az Advertising Data kulcsfontosságú felderítési mechanizmus a Bluetooth Low Energy-ben. Az eszközgyártók Manufacturer Specific Data-t adhatnak a reklámcsomaghoz egyedi adatok továbbításához. A csomag formátuma tartalmazza a Company Identifier-t (2 bájt) és tetszőleges adatokat. iOS-en a CBCentralManager szolgáltatás UUID-k tömbjét fogadja el a szűréshez — ez kíméli az akkumulátort. Androidon a ScanFilter ugyanezen az elven működik.

Az iOS és Android összehasonlítása BLE-fejlesztéshez

ParaméteriOS (Core Bluetooth)Android (BluetoothGatt)
KezelőCBCentralManagerBluetoothLeScanner
Kapcsolatconnect(to:)connectGatt()
SzolgáltatásokdiscoverServices()discoverServices()
OlvasásreadValue(for:)readCharacteristic()
ÉrtesítéseksetNotifyValue(_:for:)setCharacteristicNotification()
EngedélyekAutomatikusBLUETOOTH_SCAN, BLUETOOTH_CONNECT
iBeaconCLLocationManager (natív)AltBeacon / könyvtárak

BLE optimalizálás: MTU, Connection Interval és háttérmód

Az MTU (Maximum Transmission Unit) egyetlen Bluetooth Low Energy adatcsomag maximális mérete. Alapértelmezés szerint az MTU 23 bájt (3 bájt fejléc + 20 bájt adat). Az MTU 512 bájtra növelése jelentősen felgyorsítja az átvitelt konfigurációk vagy naplók cseréjekor. iOS-en a maximumWriteValueLength mutatja az elérhető MTU-t. Androidon az MTU növeléséhez a requestMtu()-t használják.

A Connection Interval az a gyakoriság, amellyel a központi eszköz lekérdezi a perifériát. Minél rövidebb az intervallum, annál nagyobb az átviteli sebesség, de az energiafogyasztás is. Tipikus értékek 7,5 ms-tól 4 másodpercig terjednek. Fitneszkövetők számára 100 ms elegendő; hanghoz — 7,5 ms. A BLE a mobilfejlesztésben egyensúlyt igényel az átviteli sebesség és az eszköz akkumulátor-élettartama között.

Háttérmód iOS-en és Androidon

Az iOS Background Modes-on keresztül támogatja a BLE-t háttérmódban, de korlátozásokkal. Egy alkalmazás a háttérben értesítéseket kap a jellemzőktől, de nem tud aktívan szkennelni. A rendszer újraindítja a szkennelést, amikor az eszköz helyzete megváltozik. Androidon a háttér-szkenneléshez Foreground Service szükséges állandó értesítéssel. Enélkül a mobilos rendszer megöli a folyamatot az alkalmazás minimalizálásakor.

Gyakorlati optimalizálási javaslatok

A BLE megbízható működéséhez a mobilalkalmazásokban kövesse ezeket a szabályokat. Használja a notify-t polling helyett — egy értesítésekkel rendelkező jellemző változás esetén adatokat küld, kímélve az akkumulátort. Állítsa be az optimális MTU-t a kapcsolat elején. Szűrje az eszközöket szolgáltatás UUID alapján szkenneléskor. Ellenőrizze a BLE-verem kompatibilitását különböző modelleken — a gyártók (Xiaomi, Huawei, Samsung) olyan módosításokat végeznek, amelyek befolyásolják a Bluetooth viselkedését.

Gyakran Ismételt Kérdések

Miben különbözik a BLE a klasszikus Bluetooth-tól?

A Bluetooth Low Energy (BLE) kis csomagok időszakos továbbítására van optimalizálva alacsony energiafogyasztással. A klasszikus Bluetooth hangfolyamokhoz és nagy adatmennyiségek folyamatos továbbításához készült.

Mi az a GATT a Bluetooth Low Energy-ben?

A GATT (Generic Attribute Profile) egy adatcsere-protokoll a BLE-ben, amely meghatározza a Service → Characteristic → Descriptor hierarchiát. A GATT a BLE-eszközökről történő olvasásra, írásra és értesítések fogadására szolgál.

Miért van szüksége az Androidnak ACCESS_FINE_LOCATION engedélyre a BLE-hez?

Az Android 12 előtt a BLE-szkennelés helymeghatározásra is használható volt, ezért a Google összevonta ezeket az engedélyeket. Az Android 12-től bevezették a különálló BLUETOOTH_SCAN engedélyt, helymeghatározáshoz való kötődés nélkül.

Hogyan növelhető a BLE adatátviteli sebesség?

Növelje az MTU-t a requestMtu()-n keresztül Androidon és a maximumWriteValueLength-en keresztül iOS-en. A Connection Interval szintén befolyásolja a sebességet — minél kisebb, annál gyorsabb az átvitel. Az optimális kombináció akár 10-szeres javulást is eredményez.

Mi az a Bonding a BLE-ben?

A Bonding egy állandó biztonságos kapcsolat létrehozásának eljárása a BLE-eszközök között. A Bonding után a titkosítási kulcsok elmentésre kerülnek, és az eszközök automatikusan csatlakoznak ismételt keresés nélkül.

Összefoglalás

  • Bluetooth Low Energy — vezeték nélküli kommunikációs szabvány IoT-hez minimális energiafogyasztással és akár 2 Mbps sebességgel
  • GATT az adatokat Service → Characteristic → Descriptor hierarchiába szervezi UUID-vel minden elemhez
  • Core Bluetooth — az Apple keretrendszere a BLE-hez iOS-en CBCentralManager, CBPeripheral és háttérmódokkal
  • BluetoothGatt — a fő Android API BluetoothAdapter, BluetoothLeScanner és explicit BLUETOOTH_SCAN engedélyekkel
  • iBeacon — BLE-jeladó technológia natív iOS támogatással a CLLocationManager-en keresztül
  • Bonding lehetővé teszi az automatikus újracsatlakozást a titkosítási kulcsok elmentése után
  • A Bluetooth Low Energy a mobilalkalmazásokban megköveteli az MTU, a Connection Interval és a platform háttérkorlátozásainak figyelembevételét

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése