Bluetooth Low Energy (BLE) in der mobilen Entwicklung: was es ist, welche Protokolle und wie es funktioniert

Autor: IT Sectr Veröffentlicht: 2026-07-25 Lesezeit: 11 Min.

Bluetooth Low Energy (BLE) ist ein drahtloser Kommunikationsstandard, der für die Übertragung kleiner Datenmengen mit minimalem Stromverbrauch optimiert ist. Laut Bluetooth SIG, 2025 wird die Technologie in mehr als 5 Milliarden Geräten weltweit eingesetzt. GATT (Generic Attribute Profile) organisiert Daten in einer Service → Characteristic → Descriptor-Hierarchie, die die Grundlage aller BLE-Anwendungen für iOS und Android bildet.

Wichtige Erkenntnisse

  • GATT — Datenübertragungsprotokoll in Bluetooth Low Energy mit Service → Characteristic → Descriptor-Hierarchie
  • Core Bluetooth — Apples Framework für die Arbeit mit BLE unter iOS, basierend auf CBCentralManager und CBPeripheral
  • BluetoothGatt — die wichtigste API für BLE-Verbindungen unter Android über BluetoothLeScanner
  • iBeacon — Apples BLE-Beacon-Protokoll mit nativer Unterstützung über CLLocationManager unter iOS
  • Bonding — eine permanente verschlüsselte Verbindung, die wiederholtes Scannen und Pairing überflüssig macht

Was ist Bluetooth Low Energy (BLE) und wie funktioniert es?

Bluetooth Low Energy (BLE) arbeitet nach einem Client-Server-Modell mit zwei Rollen: Central (mobiles Gerät) und Peripheral (Gerät). Central scannt die Luft und initiiert die Verbindung, während Peripheral Daten überträgt. Im Gegensatz zu Classic Bluetooth ist BLE nicht für Audiostreams ausgelegt — seine Aufgabe ist die Übertragung kleiner Pakete mit minimalem Stromverbrauch. Laut Bluetooth SIG Core Specification 5.4 (2025) unterstützt BLE Geschwindigkeiten bis zu 2 Mbit/s bei einem Stromverbrauch von weniger als 15 mA im aktiven Modus.

GATT-Hierarchie: Service, Characteristic, Descriptor

GATT (Generic Attribute Profile) definiert die Datenstruktur von Bluetooth Low Energy. Service ist eine logische Gruppe von Merkmalen (z. B. Heart Rate Service 0x180D). Characteristic ist ein Datenpunkt mit einem bestimmten Wert. Descriptor sind Metadaten eines Merkmals, einschließlich CCCD für die Benachrichtigungsverwaltung. Jedes Element hat eine UUID — 16-Bit für Standard-Bluetooth-SIG-Profile oder 128-Bit für benutzerdefinierte.

Bluetooth Low Energy in mobilen Anwendungen verwendet diese Hierarchie, um den Datenaustausch zwischen einem Smartphone und Peripheriegeräten zu organisieren. Ein korrektes Verständnis von GATT ist die Grundlage für die Entwicklung von BLE-Anwendungen auf beiden Plattformen. Der Entwickler muss die UUIDs der Dienste und Merkmale des Geräts sowie die Eigenschaften jedes Merkmals (read, write, notify, indicate) kennen.

Advertising Data und Scan Response

BLE-Geräte senden Werbepakete (Advertising Packets) zur Erkennung. Advertising Data enthält den Gerätenamen, Dienst-UUIDs, RSSI und Manufacturer Specific Data. Die Größe des Werbepakets ist auf 31 Bytes begrenzt. Zur Übertragung zusätzlicher Daten wird Scan Response verwendet — ein zweites Paket, das das zentrale Gerät nach der Erkennung anfordert.

BLE unter iOS: Core Bluetooth, CBCentralManager, CBPeripheral

Unter iOS übernimmt das Core Bluetooth-Framework die Bluetooth Low Energy-Funktionalität. CBCentralManager verwaltet das Scannen und die Verbindung, CBPeripheral repräsentiert ein entferntes BLE-Gerät. Der Prozess ist standardmäßig: Initialisieren von CBCentralManager, Überprüfen des poweredOn-Status, Starten von scanForPeripherals, Verbinden und Ermitteln von Diensten. Core Bluetooth verwaltet automatisch die Stromversorgung des Funkmoduls — wenn BLE nicht verwendet wird, schaltet es sich ab.

BLE in der mobilen Entwicklung unter iOS erfordert die Berücksichtigung von Hintergrundmodi. Der Core Bluetooth-Hintergrundmodus wird über die Capabilities des Projekts (Uses Bluetooth LE accessories) aktiviert. Im Hintergrund kann die App Benachrichtigungen von Merkmalen empfangen, aber das Scannen ist eingeschränkt — das System startet es nur neu, wenn sich das Gerät bewegt. Für iBeacon funktioniert das Hintergrundscannen über CLLocationManager aktiver.

Beispiel für BLE-Scannen in Swift

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("Gefunden: \(peripheral.name ?? "unknown")")
    }
}

In diesem Beispiel behandelt CBCentralManagerDelegate alle BLE-Verbindungsereignisse. Die Methode centralManagerDidUpdateState prüft, ob Bluetooth auf dem mobilen Gerät eingeschaltet ist. Nach erfolgreicher Initialisierung wird das Scannen gestartet. Der Callback didDiscover wird für jedes gefundene Gerät aufgerufen.

Verbinden und Lesen von Merkmalen in Core Bluetooth

Nach dem Erkennen eines Geräts müssen connect und discoverServices aufgerufen werden. CBPeripheralDelegate bietet Methoden zur Behandlung jedes Schritts: didDiscoverServices, didDiscoverCharacteristics, didUpdateValueFor. Jede Methode ist asynchron — Daten kommen über Delegaten-Callbacks an. RSSI (Received Signal Strength Indicator) zeigt den Signalpegel an: Je näher der Wert an 0 liegt, desto stärker ist das Signal.

BLE unter Android: BluetoothAdapter, BluetoothGatt, BluetoothLeScanner

Unter Android wird Bluetooth Low Energy über das Paket android.bluetooth implementiert. BluetoothAdapter ist der Einstiegspunkt für alle BLE-Operationen. BluetoothLeScanner startet das Scannen mit ScanCallback-Callbacks. Nach dem Erkennen eines Geräts wird BluetoothGatt erstellt — eine Verbindung zum Peripheriegerät. BluetoothGattCallback behandelt Ereignisse: Verbindung, Dienstermittlung, Merkmalslesen, RSSI-Änderungen.

Bluetooth Low Energy in mobilen Anwendungen unter Android erfordert explizite Berechtigungen BLUETOOTH_SCAN, BLUETOOTH_CONNECT und ACCESS_FINE_LOCATION. Seit Android 12 sind die Berechtigungen getrennt: BLUETOOTH_SCAN zum Scannen, BLUETOOTH_CONNECT zum Verbinden. ACCESS_FINE_LOCATION wird nur zum Scannen bestimmter Gerätetypen benötigt. Ohne diese Berechtigungen kann die App nicht mit BLE arbeiten.

Beispiel für BLE-Scannen in Kotlin

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", "Gerät: ${device.name}, RSSI: $rssi")
        }
    }
}

ScanSettings ermöglicht die Konfiguration des Scan-Modus: LOW_POWER zum Batteriesparen, BALANCED für Standardaufgaben, LOW_LATENCY für maximale Erkennungsgeschwindigkeit. ScanFilter schränkt die Suche nach Dienst-UUID, Gerätename oder MAC-Adresse ein. Die Filterung reduziert den Stromverbrauch und beschleunigt die Erkennung des gewünschten Geräts.

BluetoothGatt: Lesen und Benachrichtigungen unter Android

Nach dem Erstellen von BluetoothGatt über connectGatt ruft die App discoverServices auf. BluetoothGattCallback enthält onServicesDiscovered, onCharacteristicRead, onCharacteristicChanged. Um Benachrichtigungen über Merkmalsänderungen zu erhalten, muss setCharacteristicNotification aufgerufen werden. Der Prozess erfordert Aufmerksamkeit: Jeder GATT-Vorgang ist asynchron, und das Ergebnis kommt in einem separaten Callback.

iBeacon, Bonding und Advertising Data im BLE-Ökosystem

iBeacon ist Apples Technologie für BLE-Beacons, die UUID, Major und Minor übertragen. Das Beacon-Gerät sendet ein Werbepaket, und die mobile Anwendung bestimmt anhand dieser Daten den Standort und die Entfernung. Unter iOS wird iBeacon nativ über CLLocationManager unterstützt. Unter Android ist eine Drittanbieter-Bibliothek erforderlich (z. B. AltBeacon oder Android iBeacon Library).

Bonding ist das Verfahren zur Erstellung einer dauerhaften sicheren Verbindung zwischen BLE-Geräten. Nach dem Bonding werden Verschlüsselungsschlüssel gespeichert, und die Geräte verbinden sich automatisch, wenn sie wieder in Reichweite kommen. Unter iOS wird Bonding automatisch vom System verwaltet. Unter Android — über BluetoothDevice.createBond(). Bonding ist wichtig für Wearables und Fitness-Tracker, die eine schnelle Wiederverbindung benötigen.

Werbepakete und Manufacturer Specific Data

Advertising Data ist ein wichtiger Erkennungsmechanismus in Bluetooth Low Energy. Gerätehersteller können Manufacturer Specific Data zum Werbepaket hinzufügen, um benutzerdefinierte Daten zu übertragen. Das Paketformat enthält eine Company Identifier (2 Bytes) und beliebige Daten. Unter iOS akzeptiert CBCentralManager ein Array von Dienst-UUIDs zur Filterung — das spart Batterie. Unter Android funktioniert ScanFilter nach dem gleichen Prinzip.

Vergleich von iOS und Android für die BLE-Entwicklung

ParameteriOS (Core Bluetooth)Android (BluetoothGatt)
ManagerCBCentralManagerBluetoothLeScanner
Verbindungconnect(to:)connectGatt()
DienstediscoverServices()discoverServices()
LesenreadValue(for:)readCharacteristic()
BenachrichtigungensetNotifyValue(_:for:)setCharacteristicNotification()
BerechtigungenAutomatischBLUETOOTH_SCAN, BLUETOOTH_CONNECT
iBeaconCLLocationManager (nativ)AltBeacon / Bibliotheken

BLE-Optimierung: MTU, Connection Interval und Hintergrundmodus

MTU (Maximum Transmission Unit) ist die maximale Größe eines einzelnen Bluetooth Low Energy-Datenpakets. Standardmäßig beträgt die MTU 23 Bytes (3 Bytes Header + 20 Bytes Daten). Eine Erhöhung der MTU auf 512 Bytes beschleunigt die Übertragung beim Austausch von Konfigurationen oder Protokollen erheblich. Unter iOS zeigt maximumWriteValueLength die verfügbare MTU an. Unter Android wird requestMtu() verwendet, um die MTU zu erhöhen.

Connection Interval ist die Häufigkeit, mit der das zentrale Gerät das Peripheriegerät abfragt. Je kürzer das Intervall, desto höher die Übertragungsgeschwindigkeit, aber auch der Stromverbrauch. Typische Werte liegen zwischen 7,5 ms und 4 Sekunden. Für Fitness-Tracker sind 100 ms ausreichend, für Audio — 7,5 ms. BLE in der mobilen Entwicklung erfordert ein Gleichgewicht zwischen Übertragungsgeschwindigkeit und Akkulaufzeit des Geräts.

Hintergrundmodus unter iOS und Android

iOS unterstützt BLE im Hintergrundmodus über Background Modes, jedoch mit Einschränkungen. Eine App im Hintergrund empfängt Benachrichtigungen von Merkmalen, kann aber nicht aktiv scannen. Das System startet das Scannen neu, wenn sich der Standort des Geräts ändert. Unter Android erfordert das Hintergrundscannen einen Foreground Service mit einer dauerhaften Benachrichtigung. Ohne diesen wird das System den Prozess beim Minimieren der App beenden.

Praktische Optimierungsempfehlungen

Für einen zuverlässigen BLE-Betrieb in mobilen Anwendungen befolgen Sie diese Regeln. Verwenden Sie notify anstelle von Polling — ein Merkmal mit Benachrichtigungen sendet Daten bei Änderungen, was Batterie spart. Stellen Sie die optimale MTU zu Beginn der Verbindung ein. Filtern Sie Geräte beim Scannen nach Dienst-UUID. Überprüfen Sie die BLE-Stack-Kompatibilität bei verschiedenen Modellen — Hersteller (Xiaomi, Huawei, Samsung) nehmen Änderungen vor, die das Bluetooth-Verhalten beeinflussen.

Häufig gestellte Fragen

Wie unterscheidet sich BLE von klassischem Bluetooth?

Bluetooth Low Energy (BLE) ist für die regelmäßige Übertragung kleiner Pakete mit geringem Stromverbrauch optimiert. Classic Bluetooth ist für Audiostreams und die kontinuierliche Übertragung großer Datenmengen ausgelegt.

Was ist GATT in Bluetooth Low Energy?

GATT (Generic Attribute Profile) ist ein Datenübertragungsprotokoll in BLE, das die Service → Characteristic → Descriptor-Hierarchie definiert. GATT wird zum Lesen, Schreiben und Empfangen von Benachrichtigungen von BLE-Geräten verwendet.

Warum benötigt Android die ACCESS_FINE_LOCATION-Berechtigung für BLE?

Vor Android 12 konnte BLE-Scannen zur Standortbestimmung verwendet werden, daher hat Google diese Berechtigungen zusammengeführt. Seit Android 12 gibt es eine separate BLUETOOTH_SCAN-Berechtigung ohne Standortbindung.

Wie kann man die BLE-Datenübertragungsgeschwindigkeit erhöhen?

Erhöhen Sie die MTU über requestMtu() unter Android und maximumWriteValueLength unter iOS. Connection Interval beeinflusst ebenfalls die Geschwindigkeit — je kleiner, desto schneller die Übertragung. Die optimale Kombination bietet eine bis zu 10-fache Verbesserung.

Was ist Bonding in BLE?

Bonding ist das Verfahren zur Erstellung einer dauerhaften sicheren Verbindung zwischen BLE-Geräten. Nach dem Bonding werden Verschlüsselungsschlüssel gespeichert, und die Geräte verbinden sich automatisch ohne erneute Suche.

Zusammenfassung

  • Bluetooth Low Energy — drahtloser Kommunikationsstandard für IoT mit minimalem Stromverbrauch und Geschwindigkeiten bis zu 2 Mbit/s
  • GATT organisiert Daten in einer Service → Characteristic → Descriptor-Hierarchie mit UUIDs für jedes Element
  • Core Bluetooth — Apples Framework für BLE unter iOS mit CBCentralManager, CBPeripheral und Hintergrundmodi
  • BluetoothGatt — die wichtigste Android-API mit BluetoothAdapter, BluetoothLeScanner und expliziten BLUETOOTH_SCAN-Berechtigungen
  • iBeacon — BLE-Beacon-Technologie mit nativer iOS-Unterstützung über CLLocationManager
  • Bonding ermöglicht automatische Wiederverbindung nach dem Speichern von Verschlüsselungsschlüsseln
  • Bluetooth Low Energy in mobilen Anwendungen erfordert die Berücksichtigung von MTU, Connection Interval und plattformspezifischen Hintergrundbeschränkungen

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen