Mobil Rivojlanishda Bluetooth Low Energy (BLE): Bu Nima, Protokollar va Qanday Ishlaydi

Muallif: IT Sectr Nashr etilgan: 2026-07-25 O'qish vaqti: 11 daq

Bluetooth Low Energy (BLE) minimal energiya sarfi bilan kichik hajmdagi ma'lumotlarni uzatish uchun optimallashtirilgan simsiz aloqa standartidir. Bluetooth SIG, 2025 ma'lumotlariga ko'ra, texnologiya butun dunyo bo'ylab 5 milliarddan ortiq qurilmalarda qo'llaniladi. GATT (Generic Attribute Profile) ma'lumotlarni Service → Characteristic → Descriptor iyerarxiyasida tashkil qiladi, bu iOS va Android uchun barcha BLE ilovalarining asosini tashkil etadi.

Asosiy Fikrlar

  • GATT — Service → Characteristic → Descriptor iyerarxiyasiga ega Bluetooth Low Energy ma'lumot almashish protokoli
  • Core Bluetooth — iOS da BLE bilan ishlash uchun Apple freymvorki, CBCentralManager va CBPeripheral ga asoslangan
  • BluetoothGatt — BluetoothLeScanner orqali Android da BLE ulanishlari uchun asosiy API
  • iBeacon — iOS da CLLocationManager orqali mahalliy qo'llab-quvvatlashga ega Apple BLE mayoq protokoli
  • Bonding — takroriy skanerlash va juftlashni bartaraf etadigan doimiy shifrlangan ulanish

Bluetooth Low Energy (BLE) Nima va U Qanday Ishlaydi?

Bluetooth Low Energy (BLE) ikki rolli (Central (mobil qurilma) va Peripheral (qurilma)) mijoz-server modelida ishlaydi. Central havo to'lqinlarini skanerlaydi va ulanishni boshlaydi, Peripheral esa ma'lumotlarni uzatadi. Klassik Bluetooth dan farqli o'laroq, BLE audio oqimlari uchun mo'ljallanmagan — uning vazifasi minimal energiya sarfi bilan kichik paketlarni uzatishdir. Bluetooth SIG Core Specification 5.4 (2025) ga ko'ra, BLE faol rejimda 15 mA dan kam oqim bilan 2 Mbps gacha tezlikni qo'llab-quvvatlaydi.

GATT Iyerarxiyasi: Service, Characteristic, Descriptor

GATT (Generic Attribute Profile) Bluetooth Low Energy ma'lumotlar strukturasini belgilaydi. Service xususiyatlarning mantiqiy guruhidir (masalan, Heart Rate Service 0x180D). Characteristic ma'lum bir qiymatga ega ma'lumot nuqtasidir. Descriptor bildirishnomalarni boshqarish uchun CCCD ni o'z ichiga olgan xususiyat metama'lumotlaridir. Har bir element UUID ga ega — standart Bluetooth SIG profillari uchun 16-bit yoki moslashtirilgan uchun 128-bit.

Mobil ilovalarda Bluetooth Low Energy smartfon va periferik qurilmalar o'rtasida ma'lumot almashinuvini tashkil qilish uchun ushbu iyerarxiyadan foydalanadi. GATT ni to'g'ri tushunish har ikki platformada BLE ilovalarini ishlab chiqishning asosidir. Dasturchi qurilmaning xizmatlari va xususiyatlarining UUID larini, shuningdek har bir xususiyatning xossalarini (read, write, notify, indicate) bilishi kerak.

Advertising Data va Scan Response

BLE qurilmalari aniqlash uchun reklama paketlarini (advertising packets) uzatadi. Advertising Data qurilma nomi, xizmat UUID lari, RSSI va Manufacturer Specific Data ni o'z ichiga oladi. Reklama paketining hajmi 31 bayt bilan cheklangan. Qo'shimcha ma'lumotlarni uzatish uchun Scan Response ishlatiladi — markaziy qurilma aniqlashdan so'ng so'raydigan ikkinchi paket.

iOS da BLE: Core Bluetooth, CBCentralManager, CBPeripheral

iOS da Core Bluetooth freymvorki Bluetooth Low Energy ni boshqaradi. CBCentralManager skanerlash va ulanishni boshqaradi, CBPeripheral uzoqdagi BLE qurilmasini ifodalaydi. Jarayon standart: CBCentralManager ni ishga tushirish, poweredOn holatini tekshirish, scanForPeripherals ni boshlash, ulanish va xizmatlarni kashf qilish. Core Bluetooth radio modulining quvvatini avtomatik boshqaradi — BLE ishlatilmasa, o'chadi.

iOS da mobil rivojlanishda BLE fon rejimlarini hisobga olishni talab qiladi. Core Bluetooth fon rejimi loyihaning Capabilities (Uses Bluetooth LE accessories) orqali yoqiladi. Fonda ilova xususiyatlardan bildirishnomalarni qabul qilishi mumkin, ammo skanerlash cheklangan — tizim uni faqat qurilma harakatlanayotganda qayta ishga tushiradi. iBeacon uchun fon skanerlash CLLocationManager orqali faolroq ishlaydi.

Swift da BLE Skanerlash Namunasi

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

Ushbu misolda CBCentralManagerDelegate barcha BLE ulanish hodisalarini qayta ishlaydi. centralManagerDidUpdateState metodi mobil qurilmada Bluetooth yoqilgan yoki yo'qligini tekshiradi. Muvaffaqiyatli ishga tushirilgandan so'ng skanerlash boshlanadi. Har bir topilgan qurilma uchun didDiscover callback i chaqiriladi.

Core Bluetooth da Ulanish va Xususiyatlarni O'qish

Qurilmani kashf qilgandan so'ng connect va discoverServices ni chaqirish kerak. CBPeripheralDelegate har bir qadamni qayta ishlash uchun metodlarni taqdim etadi: didDiscoverServices, didDiscoverCharacteristics, didUpdateValueFor. Har bir metod asinxrondir — ma'lumotlar delegat callback lari orqali keladi. RSSI (Received Signal Strength Indicator) signal darajasini ko'rsatadi: qiymat 0 ga qanchalik yaqin bo'lsa, signal shunchalik kuchli.

Android da BLE: BluetoothAdapter, BluetoothGatt, BluetoothLeScanner

Android da Bluetooth Low Energy android.bluetooth paketi orqali amalga oshiriladi. BluetoothAdapter barcha BLE operatsiyalari uchun kirish nuqtasidir. BluetoothLeScanner ScanCallback callback lari bilan skanerlashni boshlaydi. Qurilmani kashf qilgandan so'ng BluetoothGatt yaratiladi — periferikga ulanish. BluetoothGattCallback hodisalarni qayta ishlaydi: ulanish, xizmatlarni kashf qilish, xususiyatlarni o'qish, RSSI o'zgarishlari.

Android da mobil ilovalarda Bluetooth Low Energy aniq BLUETOOTH_SCAN, BLUETOOTH_CONNECT va ACCESS_FINE_LOCATION ruxsatnomalarini talab qiladi. Android 12 dan ruxsatnomalar ajratilgan: skanerlash uchun BLUETOOTH_SCAN, ulanish uchun BLUETOOTH_CONNECT. ACCESS_FINE_LOCATION faqat ma'lum turdagi qurilmalarni skanerlash uchun kerak. Ushbu ruxsatnomalarsiz ilova BLE bilan ishlay olmaydi.

Kotlin da BLE Skanerlash Namunasi

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

ScanSettings skanerlash rejimini sozlash imkonini beradi: batareyani tejash uchun LOW_POWER, standart vazifalar uchun BALANCED, maksimal aniqlash tezligi uchun LOW_LATENCY. ScanFilter xizmat UUID si, qurilma nomi yoki MAC manzili bo'yicha qidiruvni toraytiradi. Filtrlash energiya sarfini kamaytiradi va kerakli qurilmani aniqlashni tezlashtiradi.

BluetoothGatt: Android da O'qish va Bildirishnomalar

connectGatt orqali BluetoothGatt yaratgandan so'ng ilova discoverServices ni chaqiradi. BluetoothGattCallback onServicesDiscovered, onCharacteristicRead, onCharacteristicChanged ni o'z ichiga oladi. Xususiyat o'zgarishlari haqida bildirishnomalarni olish uchun setCharacteristicNotification chaqirilishi kerak. Jarayon diqqat talab qiladi: har bir GATT operatsiyasi asinxrondir va natija alohida callback da keladi.

BLE Ekotizimida iBeacon, Bonding va Advertising Data

iBeacon UUID, Major va Minor ni uzatuvchi BLE mayoqlari uchun Apple texnologiyasidir. Mayoq qurilmasi reklama paketini tarqatadi va mobil ilova ushbu ma'lumotlar asosida joy va masofani aniqlaydi. iOS da iBeacon CLLocationManager orqali mahalliy qo'llab-quvvatlanadi. Android da uchinchi tomon kutubxonasi talab qilinadi (masalan, AltBeacon yoki Android iBeacon Library).

Bonding BLE qurilmalari o'rtasida doimiy xavfsiz ulanish yaratish protsedurasidir. Bonding dan so'ng shifrlash kalitlari saqlanadi va qurilmalar yana yaqinlashganda avtomatik ulanadi. iOS da bonding tizim tomonidan avtomatik boshqariladi. Android da — BluetoothDevice.createBond() orqali. Bonding tez qayta ulanishni talab qiladigan kiyiladigan qurilmalar va fitnes kuzatuvchilar uchun muhimdir.

Reklama Paketlari va Manufacturer Specific Data

Advertising Data Bluetooth Low Energy da asosiy aniqlash mexanizmidir. Qurilma ishlab chiqaruvchilari moslashtirilgan ma'lumotlarni uzatish uchun reklama paketiga Manufacturer Specific Data qo'shishi mumkin. Paket formati Company Identifier (2 bayt) va ixtiyoriy ma'lumotlarni o'z ichiga oladi. iOS da CBCentralManager filtrlash uchun xizmat UUID lari massivini qabul qiladi — bu batareyani tejaydi. Android da ScanFilter xuddi shu printsipda ishlaydi.

BLE Rivojlanishi uchun iOS va Android Taqqoslashi

ParametriOS (Core Bluetooth)Android (BluetoothGatt)
MenejerCBCentralManagerBluetoothLeScanner
Ulanishconnect(to:)connectGatt()
XizmatlardiscoverServices()discoverServices()
O'qishreadValue(for:)readCharacteristic()
BildirishnomalarsetNotifyValue(_:for:)setCharacteristicNotification()
RuxsatnomalarAvtomatikBLUETOOTH_SCAN, BLUETOOTH_CONNECT
iBeaconCLLocationManager (mahalliy)AltBeacon / kutubxonalar

BLE Optimallashtirish: MTU, Connection Interval va Fon Rejimi

MTU (Maximum Transmission Unit) bitta Bluetooth Low Energy ma'lumot paketining maksimal hajmidir. Sukut bo'yicha, MTU 23 bayt (3 bayt sarlavha + 20 bayt ma'lumot). MTU ni 512 baytgacha oshirish konfiguratsiya yoki jurnallarni almashishda uzatishni sezilarli darajada tezlashtiradi. iOS da maximumWriteValueLength mavjud MTU ni ko'rsatadi. Android da MTU ni oshirish uchun requestMtu() ishlatiladi.

Connection Interval markaziy qurilmaning periferikni so'rov chastotasidir. Interval qanchalik qisqa bo'lsa, uzatish tezligi shunchalik yuqori, ammo energiya sarfi ham shuncha ko'p. Oddiy qiymatlar 7,5 ms dan 4 soniyagacha. Fitnes kuzatuvchilar uchun 100 ms yetarli; audio uchun — 7,5 ms. Mobil rivojlanishda BLE uzatish tezligi va qurilma batareyasining ishlash muddati o'rtasida muvozanatni talab qiladi.

iOS va Android da Fon Rejimi

iOS Background Modes orqali BLE ni fon rejimida qo'llab-quvvatlaydi, ammo cheklovlar bilan. Fondagi ilova xususiyatlardan bildirishnomalarni oladi, ammo faol skanerlay olmaydi. Tizim qurilma joylashuvi o'zgarganda skanerlashni qayta ishga tushiradi. Android da fon skanerlashi doimiy bildirishnoma bilan Foreground Service ni talab qiladi. Aks holda, mobil tizim ilovani minimallashtirishda jarayonni o'ldiradi.

Amaliy Optimallashtirish Tavsiyalari

Mobil ilovalarda ishonchli BLE ishlashi uchun ushbu qoidalarga amal qiling. Polling o'rniga notify dan foydalaning — bildirishnomalarga ega xususiyat o'zgarish paytida ma'lumot yuboradi, batareyani tejaydi. Ulanish boshida optimal MTU ni o'rnating. Skanerlashda xizmat UUID si bo'yicha qurilmalarni filtrlang. Turli modellarda BLE stekining mosligini tekshiring — ishlab chiqaruvchilar (Xiaomi, Huawei, Samsung) Bluetooth xatti-harakatiga ta'sir qiluvchi o'zgarishlar kiritadi.

Tez-tez Beriladigan Savollar

BLE Klassik Bluetooth dan qanday farq qiladi?

Bluetooth Low Energy (BLE) kam energiya sarfi bilan kichik paketlarning davriy uzatilishi uchun optimallashtirilgan. Klassik Bluetooth audio oqimlari va katta hajmdagi ma'lumotlarning uzluksiz uzatilishi uchun mo'ljallangan.

Bluetooth Low Energy da GATT nima?

GATT (Generic Attribute Profile) Service → Characteristic → Descriptor iyerarxiyasini belgilaydigan BLE da ma'lumot almashish protokolidir. GATT BLE qurilmalaridan ma'lumot o'qish, yozish va bildirishnomalarni olish uchun ishlatiladi.

Android BLE uchun nima uchun ACCESS_FINE_LOCATION ruxsatnomasini talab qiladi?

Android 12 dan oldin BLE skanerlash joyni aniqlash uchun ishlatilishi mumkin edi, shuning uchun Google bu ruxsatnomalarni birlashtirdi. Android 12 dan joy bilan bog'liq bo'lmagan alohida BLUETOOTH_SCAN ruxsatnomasi joriy etildi.

BLE ma'lumot uzatish tezligini qanday oshirish mumkin?

Android da requestMtu() va iOS da maximumWriteValueLength orqali MTU ni oshiring. Connection Interval ham tezlikka ta'sir qiladi — qanchalik kichik bo'lsa, uzatish shunchalik tez. Optimal kombinatsiya 10 baravargacha yaxshilanishni ta'minlaydi.

BLE da Bonding nima?

Bonding BLE qurilmalari o'rtasida doimiy xavfsiz ulanish yaratish protsedurasidir. Bonding dan so'ng shifrlash kalitlari saqlanadi va qurilmalar takroriy qidiruvsiz avtomatik ulanadi.

Xulosa

  • Bluetooth Low Energy — minimal energiya sarfi va 2 Mbps gacha tezlik bilan IoT uchun simsiz aloqa standarti
  • GATT ma'lumotlarni har bir element uchun UUID lar bilan Service → Characteristic → Descriptor iyerarxiyasida tashkil qiladi
  • Core Bluetooth — CBCentralManager, CBPeripheral va fon rejimlari bilan iOS da BLE uchun Apple freymvorki
  • BluetoothGatt — BluetoothAdapter, BluetoothLeScanner va aniq BLUETOOTH_SCAN ruxsatnomalari bilan asosiy Android API
  • iBeacon — CLLocationManager orqali iOS da mahalliy qo'llab-quvvatlashga ega BLE mayoq texnologiyasi
  • Bonding shifrlash kalitlarini saqlagandan so'ng avtomatik qayta ulanishni ta'minlaydi
  • Mobil ilovalarda Bluetooth Low Energy MTU, Connection Interval va platforma fon cheklovlarini hisobga olishni talab qiladi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish