Bluetooth Low Energy (BLE) minimum enerji sərfiyyatı ilə kiçik həcmdə məlumat ötürmək üçün optimallaşdırılmış simsiz rabitə standartıdır. Bluetooth SIG, 2025-ə görə, texnologiya dünyada 5 milyarddan çox cihazda istifadə olunur. GATT (Generic Attribute Profile) məlumatları Service → Characteristic → Descriptor iyerarxiyasında təşkil edir ki, bu da iOS və Android üçün bütün BLE tətbiqlərinin əsasını təşkil edir.
Əsas Məqamlar
Bluetooth Low Energy (BLE) iki rolla (Central (mobil cihaz) və Peripheral (cihaz)) müştəri-server modelində işləyir. Central hava dalğalarını skan edir və bağlantını başladır, Peripheral isə məlumat ötürür. Klassik Bluetooth-dan fərqli olaraq, BLE audio axınları üçün nəzərdə tutulmayıb — onun vəzifəsi minimum enerji sərfiyyatı ilə kiçik paketlər ötürməkdir. Bluetooth SIG Core Specification 5.4-ə (2025) görə, BLE aktiv rejimdə 15 mA-dan az cərəyanla 2 Mbps-ə qədər sürəti dəstəkləyir.
GATT (Generic Attribute Profile) Bluetooth Low Energy-nin məlumat strukturunu müəyyən edir. Service xüsusiyyətlərin məntiqi qrupudur (məsələn, Heart Rate Service 0x180D). Characteristic müəyyən dəyəri olan məlumat nöqtəsidir. Descriptor bildiriş idarəetməsi üçün CCCD daxil olmaqla xüsusiyyət meta məlumatlarıdır. Hər elementin UUID-si var — standart Bluetooth SIG profilləri üçün 16-bit və ya fərdi üçün 128-bit.
Mobil tətbiqlərdə Bluetooth Low Energy smartfon və periferiya cihazları arasında məlumat mübadiləsini təşkil etmək üçün bu iyerarxiyadan istifadə edir. GATT-ı düzgün başa düşmək hər iki platformada BLE tətbiqləri hazırlamağın əsasıdır. Tərtibatçı cihazın xidmət və xüsusiyyətlərinin UUID-lərini, həmçinin hər xüsusiyyətin xassələrini (read, write, notify, indicate) bilməlidir.
BLE cihazları aşkarlanmaq üçün reklam paketləri (advertising packets) ötürür. Advertising Data cihaz adı, xidmət UUID-ləri, RSSI və Manufacturer Specific Data ehtiva edir. Reklam paketinin ölçüsü 31 baytla məhdudlaşır. Əlavə məlumat ötürmək üçün Scan Response istifadə olunur — mərkəzi cihazın aşkarlanmadan sonra tələb etdiyi ikinci paket.
iOS-da Core Bluetooth freymvorku Bluetooth Low Energy-ni idarə edir. CBCentralManager skan etmə və bağlantını idarə edir, CBPeripheral uzaq BLE cihazını təmsil edir. Proses standartdır: CBCentralManager-ı işə salmaq, poweredOn vəziyyətini yoxlamaq, scanForPeripherals-ı başlatmaq, qoşulmaq və xidmətləri aşkar etmək. Core Bluetooth avtomatik olaraq radio modulunun enerjisini idarə edir — BLE istifadə edilmirsə, sönür.
iOS-da mobil inkişafda BLE fon rejimlərini nəzərə almağı tələb edir. Core Bluetooth fon rejimi layihənin Capabilities (Uses Bluetooth LE accessories) vasitəsilə aktivləşdirilir. Fonda tətbiq xüsusiyyətlərdən bildirişlər ala bilər, lakin skan etmə məhduddur — sistem yalnız cihaz hərəkət etdikdə onu yenidən başladır. iBeacon üçün fon skan etmə CLLocationManager vasitəsilə daha aktiv işləyir.
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("Tapıldı: \(peripheral.name ?? "unknown")")
}
}
Bu nümunədə CBCentralManagerDelegate bütün BLE bağlantı hadisələrini emal edir. centralManagerDidUpdateState metodu mobil cihazda Bluetooth-un aktiv olub-olmadığını yoxlayır. Uğurlu işə salınmadan sonra skan etmə başlayır. Hər tapılan cihaz üçün didDiscover geri çağırışı çağırılır.
Cihazı aşkar etdikdən sonra connect və discoverServices çağırılmalıdır. CBPeripheralDelegate hər addımı emal etmək üçün metodlar təqdim edir: didDiscoverServices, didDiscoverCharacteristics, didUpdateValueFor. Hər metod asinxrondur — məlumatlar nümayəndə geri çağırışları vasitəsilə gəlir. RSSI (Received Signal Strength Indicator) siqnal səviyyəsini göstərir: dəyər 0-a nə qədər yaxındırsa, siqnal bir o qədər güclüdür.
Android-də Bluetooth Low Energy android.bluetooth paketi vasitəsilə həyata keçirilir. BluetoothAdapter bütün BLE əməliyyatları üçün giriş nöqtəsidir. BluetoothLeScanner ScanCallback geri çağırışları ilə skan etməyə başlayır. Cihaz aşkar edildikdən sonra BluetoothGatt yaradılır — periferiyaya bağlantı. BluetoothGattCallback hadisələri emal edir: qoşulma, xidmətlərin aşkarlanması, xüsusiyyətlərin oxunması, RSSI dəyişiklikləri.
Android-də mobil tətbiqlərdə Bluetooth Low Energy açıq BLUETOOTH_SCAN, BLUETOOTH_CONNECT və ACCESS_FINE_LOCATION icazələri tələb edir. Android 12-dən icazələr ayrılıb: skan etmək üçün BLUETOOTH_SCAN, qoşulmaq üçün BLUETOOTH_CONNECT. ACCESS_FINE_LOCATION yalnız müəyyən cihaz növlərini skan etmək üçün tələb olunur. Bu icazələr olmadan tətbiq BLE ilə işləyə bilməz.
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", "Cihaz: ${device.name}, RSSI: $rssi")
}
}
}
ScanSettings skan rejimini konfiqurasiya etməyə imkan verir: batareyaya qənaət üçün LOW_POWER, standart tapşırıqlar üçün BALANCED, maksimum aşkarlama sürəti üçün LOW_LATENCY. ScanFilter xidmət UUID-si, cihaz adı və ya MAC ünvanı ilə axtarışı daraldır. Filtrləmə enerji sərfiyyatını azaldır və istənilən cihazın aşkarlanmasını sürətləndirir.
connectGatt vasitəsilə BluetoothGatt yaratdıqdan sonra tətbiq discoverServices-ı çağırır. BluetoothGattCallback onServicesDiscovered, onCharacteristicRead, onCharacteristicChanged ehtiva edir. Xüsusiyyət dəyişiklikləri haqqında bildirişlər almaq üçün setCharacteristicNotification çağırılmalıdır. Proses diqqət tələb edir: hər GATT əməliyyatı asinxrondur və nəticə ayrıca geri çağırışda gəlir.
iBeacon UUID, Major və Minor ötürən BLE mayakları üçün Apple texnologiyasıdır. Mayak cihazı reklam paketi yayımlayır və mobil tətbiq bu məlumatlar əsasında yer və məsafəni müəyyən edir. iOS-da iBeacon CLLocationManager vasitəsilə yerli olaraq dəstəklənir. Android-də üçüncü tərəf kitabxanası tələb olunur (məsələn, AltBeacon və ya Android iBeacon Library).
Bonding BLE cihazları arasında daimi təhlükəsiz bağlantı yaratmaq prosedurudur. Bonding-dən sonra şifrələmə açarları saxlanılır və cihazlar yenidən yaxınlaşdıqda avtomatik qoşulur. iOS-da bonding sistem tərəfindən avtomatik idarə olunur. Android-də — BluetoothDevice.createBond() vasitəsilə. Bonding sürətli yenidən qoşulma tələb edən geyilə bilən cihazlar və fitnes izləyiciləri üçün vacibdir.
Advertising Data Bluetooth Low Energy-də əsas aşkarlama mexanizmidir. Cihaz istehsalçıları fərdi məlumatları ötürmək üçün reklam paketinə Manufacturer Specific Data əlavə edə bilər. Paket formatına Company Identifier (2 bayt) və ixtiyari məlumatlar daxildir. iOS-da CBCentralManager filtrləmə üçün xidmət UUID-ləri massivini qəbul edir — bu batareyaya qənaət edir. Android-də ScanFilter eyni prinsiplə işləyir.
| Parametr | iOS (Core Bluetooth) | Android (BluetoothGatt) |
|---|---|---|
| Menecer | CBCentralManager | BluetoothLeScanner |
| Bağlantı | connect(to:) | connectGatt() |
| Xidmətlər | discoverServices() | discoverServices() |
| Oxuma | readValue(for:) | readCharacteristic() |
| Bildirişlər | setNotifyValue(_:for:) | setCharacteristicNotification() |
| İcazələr | Avtomatik | BLUETOOTH_SCAN, BLUETOOTH_CONNECT |
| iBeacon | CLLocationManager (yerli) | AltBeacon / kitabxanalar |
MTU (Maximum Transmission Unit) tək Bluetooth Low Energy məlumat paketinin maksimum ölçüsüdür. Susmaya görə, MTU 23 baytdır (3 bayt başlıq + 20 bayt məlumat). MTU-nu 512 bayta artırmaq konfiqurasiya və ya jurnalların mübadiləsində ötürməni əhəmiyyətli dərəcədə sürətləndirir. iOS-da maximumWriteValueLength mövcud MTU-nu göstərir. Android-də MTU-nu artırmaq üçün requestMtu() istifadə olunur.
Connection Interval mərkəzi cihazın periferiyanı sorğulama tezliyidir. Interval nə qədər qısadırsa, ötürmə sürəti bir o qədər yüksəkdir, lakin enerji sərfiyyatı da o qədər çoxdur. Tipik dəyərlər 7,5 ms-dən 4 saniyəyə qədərdir. Fitnes izləyiciləri üçün 100 ms kifayətdir; audio üçün — 7,5 ms. Mobil inkişafda BLE ötürmə sürəti və cihaz batareyasının ömrü arasında balans tələb edir.
iOS Background Modes vasitəsilə BLE-ni fon rejimində dəstəkləyir, lakin məhdudiyyətlərlə. Fondakı tətbiq xüsusiyyətlərdən bildirişlər alır, lakin aktiv skan edə bilməz. Sistem cihazın yeri dəyişdikdə skan etməni yenidən başladır. Android-də fon skan etməsi daimi bildirişlə Foreground Service tələb edir. Olmadan, mobil sistem tətbiqi kiçildərkən prosesi öldürəcək.
Mobil tətbiqlərdə etibarlı BLE işləməsi üçün bu qaydalara əməl edin. Polling əvəzinə notify istifadə edin — bildirişləri olan xüsusiyyət dəyişiklik zamanı məlumat göndərir, batareyaya qənaət edir. Bağlantının əvvəlində optimal MTU təyin edin. Skan edərkən xidmət UUID-si ilə cihazları filtrləyin. Müxtəlif modellərdə BLE yığınının uyğunluğunu yoxlayın — istehsalçılar (Xiaomi, Huawei, Samsung) Bluetooth davranışına təsir edən dəyişikliklər edir.
Tez-tez Verilən Suallar
Bluetooth Low Energy (BLE) aşağı enerji sərfiyyatı ilə kiçik paketlərin dövri ötürülməsi üçün optimallaşdırılıb. Klassik Bluetooth audio axınları və böyük həcmdə məlumatların davamlı ötürülməsi üçün nəzərdə tutulub.
GATT (Generic Attribute Profile) Service → Characteristic → Descriptor iyerarxiyasını təyin edən BLE-də məlumat mübadiləsi protokoludur. GATT BLE cihazlarından məlumat oxumaq, yazmaq və bildirişlər almaq üçün istifadə olunur.
Android 12-dən əvvəl BLE skan etməsi yer müəyyən etmək üçün istifadə oluna bilərdi, buna görə Google bu icazələri birləşdirdi. Android 12-dən yerlə əlaqəsi olmayan ayrıca BLUETOOTH_SCAN icazəsi təqdim edildi.
Android-də requestMtu() və iOS-da maximumWriteValueLength vasitəsilə MTU-nu artırın. Connection Interval da sürətə təsir edir — nə qədər kiçik olsa, ötürmə bir o qədər sürətli olur. Optimal birləşmə 10 dəfəyə qədər yaxşılaşma təmin edir.
Bonding BLE cihazları arasında daimi təhlükəsiz bağlantı yaratmaq prosedurudur. Bonding-dən sonra şifrələmə açarları saxlanılır və cihazlar təkrar axtarış olmadan avtomatik qoşulur.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.