Mobil İnkişafda Bluetooth Low Energy (BLE): Bu Nədir, Protokollar və Necə İşləyir

Müəllif: IT Sectr Dərc olunub: 2026-07-25 Oxuma vaxtı: 11 dəq

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

  • GATT — Service → Characteristic → Descriptor iyerarxiyası ilə Bluetooth Low Energy məlumat mübadiləsi protokolu
  • Core Bluetooth — iOS-da BLE ilə işləmək üçün Apple freymvorku, CBCentralManager və CBPeripheral-ə əsaslanır
  • BluetoothGatt — BluetoothLeScanner vasitəsilə Android-də BLE bağlantıları üçün əsas API
  • iBeacon — iOS-da CLLocationManager vasitəsilə yerli dəstəklə Apple BLE mayak protokolu
  • Bonding — təkrar skan etmə və qoşulmanı aradan qaldıran daimi şifrələnmiş bağlantı

Bluetooth Low Energy (BLE) Nədir və Necə İşləyir?

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 İyerarxiyası: Service, Characteristic, Descriptor

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.

Advertising Data və Scan Response

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 BLE: Core Bluetooth, CBCentralManager, CBPeripheral

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.

Swift-də BLE Skan Etmə Nümunəsi

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("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.

Core Bluetooth-da Qoşulma və Xüsusiyyətlərin Oxunması

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ə BLE: BluetoothAdapter, BluetoothGatt, BluetoothLeScanner

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.

Kotlin-də BLE Skan Etmə Nümunəsi

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", "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.

BluetoothGatt: Android-də Oxuma və Bildirişlər

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.

BLE Ekosistemində iBeacon, Bonding və Advertising Data

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.

Reklam Paketləri və Manufacturer Specific Data

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.

BLE İnkişafı üçün iOS və Android Müqayisəsi

ParametriOS (Core Bluetooth)Android (BluetoothGatt)
MenecerCBCentralManagerBluetoothLeScanner
Bağlantıconnect(to:)connectGatt()
XidmətlərdiscoverServices()discoverServices()
OxumareadValue(for:)readCharacteristic()
BildirişlərsetNotifyValue(_:for:)setCharacteristicNotification()
İcazələrAvtomatikBLUETOOTH_SCAN, BLUETOOTH_CONNECT
iBeaconCLLocationManager (yerli)AltBeacon / kitabxanalar

BLE Optimallaşdırması: MTU, Connection Interval və Fon Rejimi

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 və Android-də Fon Rejimi

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.

Praktiki Optimallaşdırma Tövsiyələri

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

BLE Klassik Bluetooth-dan nə ilə fərqlənir?

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.

Bluetooth Low Energy-də GATT nədir?

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 BLE üçün nə üçün ACCESS_FINE_LOCATION icazəsi tələb edir?

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.

BLE məlumat ötürmə sürətini necə artırmaq olar?

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.

BLE-də Bonding nədir?

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ə

  • Bluetooth Low Energy — minimum enerji sərfiyyatı və 2 Mbps-ə qədər sürət ilə IoT üçün simsiz rabitə standartı
  • GATT məlumatları hər element üçün UUID-lərlə Service → Characteristic → Descriptor iyerarxiyasında təşkil edir
  • Core Bluetooth — CBCentralManager, CBPeripheral və fon rejimləri ilə iOS-da BLE üçün Apple freymvorku
  • BluetoothGatt — BluetoothAdapter, BluetoothLeScanner və açıq BLUETOOTH_SCAN icazələri ilə əsas Android API
  • iBeacon — CLLocationManager vasitəsilə iOS-da yerli dəstəklə BLE mayak texnologiyası
  • Bonding şifrələmə açarlarını saxladıqdan sonra avtomatik yenidən qoşulmanı təmin edir
  • Mobil tətbiqlərdə Bluetooth Low Energy MTU, Connection Interval və platforma fon məhdudiyyətlərini nəzərə almağı tələb edir

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.

Layihəni müzakirə et