Bluetooth Low Energy (BLE) sa Mobile Development: Ano Ito, Mga Protocol at Paano Ito Gumagana

May-akda: IT Sectr Nai-publish: 2026-07-25 Oras ng pagbabasa: 11 min

Ang Bluetooth Low Energy (BLE) ay isang wireless communication standard na na-optimize para sa pagpapadala ng maliit na dami ng data na may minimal na konsumo ng kuryente. Ayon sa Bluetooth SIG, 2025, ang teknolohiya ay ginagamit sa mahigit 5 bilyong device sa buong mundo. GATT (Generic Attribute Profile) ay nag-aayos ng data sa isang hierarchy na Service → Characteristic → Descriptor, na siyang pundasyon ng lahat ng BLE application para sa iOS at Android.

Mga Pangunahing Punto

  • GATT — isang data exchange protocol sa Bluetooth Low Energy na may hierarchy na Service → Characteristic → Descriptor
  • Core Bluetooth — framework ng Apple para sa pagtatrabaho sa BLE sa iOS, batay sa CBCentralManager at CBPeripheral
  • BluetoothGatt — ang pangunahing API para sa mga BLE connection sa Android sa pamamagitan ng BluetoothLeScanner
  • iBeacon — protocol ng BLE beacon ng Apple na may native na suporta sa pamamagitan ng CLLocationManager sa iOS
  • Bonding — isang permanenteng naka-encrypt na koneksyon na nag-aalis ng paulit-ulit na pag-scan at pagpapares

Ano ang Bluetooth Low Energy (BLE) at paano ito gumagana?

Ang Bluetooth Low Energy (BLE) ay gumagana sa isang client-server model na may dalawang papel: Central (mobile device) at Peripheral (device). Central ay nag-scan ng mga alon at nagpapasimula ng koneksyon, habang ang Peripheral ay nagpapadala ng data. Hindi tulad ng classic Bluetooth, ang BLE ay hindi dinisenyo para sa mga audio stream — ang gawain nito ay magpadala ng maliliit na packet na may minimal na konsumo ng kuryente. Ayon sa Bluetooth SIG Core Specification 5.4 (2025), sinusuportahan ng BLE ang bilis hanggang 2 Mbps na may kasalukuyang mas mababa sa 15 mA sa active mode.

GATT Hierarchy: Service, Characteristic, Descriptor

GATT (Generic Attribute Profile) ay tumutukoy sa istruktura ng data ng Bluetooth Low Energy. Service ay isang lohikal na grupo ng mga katangian (halimbawa, Heart Rate Service 0x180D). Characteristic ay isang data point na may partikular na halaga. Descriptor ay metadata ng katangian, kasama ang CCCD para sa pamamahala ng mga notification. Bawat elemento ay may UUID — 16-bit para sa standard na Bluetooth SIG profile o 128-bit para sa custom.

Ang Bluetooth Low Energy sa mga mobile application ay gumagamit ng hierarchy na ito upang ayusin ang pagpapalitan ng data sa pagitan ng smartphone at mga peripheral. Ang tamang pag-unawa sa GATT ay pundasyon ng pag-develop ng BLE application sa parehong platform. Dapat malaman ng developer ang UUID ng mga serbisyo at katangian ng device, pati na rin ang mga property ng bawat katangian (read, write, notify, indicate).

Advertising Data at Scan Response

Ang mga BLE device ay nagpapadala ng advertising packets para sa pagtuklas. Advertising Data ay naglalaman ng pangalan ng device, UUID ng mga serbisyo, RSSI at Manufacturer Specific Data. Ang laki ng advertising packet ay limitado sa 31 bytes. Para magpadala ng karagdagang data, ginagamit ang Scan Response — isang pangalawang packet na hinihiling ng central device pagkatapos ng pagtuklas.

BLE sa iOS: Core Bluetooth, CBCentralManager, CBPeripheral

Sa iOS, ang Core Bluetooth framework ang humahawak sa Bluetooth Low Energy. Ang CBCentralManager ay namamahala sa pag-scan at koneksyon, ang CBPeripheral ay kumakatawan sa isang malayuang BLE device. Ang proseso ay pamantayan: pagsisimula ng CBCentralManager, pag-check sa poweredOn status, pagsisimula ng scanForPeripherals, pagkonekta at pagtuklas ng mga serbisyo. Ang Core Bluetooth ay awtomatikong namamahala sa power ng radio module — kung hindi ginagamit ang BLE, ito ay namamatay.

Ang BLE sa mobile development sa iOS ay nangangailangan ng pagsasaalang-alang ng mga background mode. Ang Core Bluetooth background mode ay pinapagana sa pamamagitan ng Capabilities ng proyekto (Uses Bluetooth LE accessories). Sa background, ang app ay maaaring makatanggap ng mga notification mula sa mga katangian, ngunit ang pag-scan ay limitado — ang system ay nag-restart lamang nito kapag gumagalaw ang device. Para sa iBeacon, ang background scanning ay gumagana nang mas aktibo sa pamamagitan ng CLLocationManager.

Halimbawa ng BLE Scanning sa 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("Natagpuan: \(peripheral.name ?? "unknown")")
    }
}

Sa halimbawang ito, ang CBCentralManagerDelegate ay humahawak ng lahat ng BLE connection event. Ang pamamaraang centralManagerDidUpdateState ay tumitingin kung naka-on ang Bluetooth sa mobile device. Pagkatapos ng matagumpay na pagsisimula, magsisimula ang pag-scan. Ang callback na didDiscover ay tinatawag para sa bawat device na natagpuan.

Pagkonekta at Pagbasa ng mga Katangian sa Core Bluetooth

Pagkatapos matuklasan ang isang device, kailangang tawagan ang connect at discoverServices. CBPeripheralDelegate ay nagbibigay ng mga pamamaraan para sa bawat hakbang: didDiscoverServices, didDiscoverCharacteristics, didUpdateValueFor. Bawat pamamaraan ay asincrono — ang data ay dumarating sa pamamagitan ng delegate callbacks. Ang RSSI (Received Signal Strength Indicator) ay nagpapakita ng antas ng signal: mas malapit ang halaga sa 0, mas malakas ang signal.

BLE sa Android: BluetoothAdapter, BluetoothGatt, BluetoothLeScanner

Sa Android, ang Bluetooth Low Energy ay ipinapatupad sa pamamagitan ng android.bluetooth package. BluetoothAdapter ay ang entry point para sa lahat ng BLE operations. Ang BluetoothLeScanner ay nagsisimula ng pag-scan na may ScanCallback callbacks. Pagkatapos matuklasan ang isang device, ang BluetoothGatt ay nilikha — isang koneksyon sa peripheral. Ang BluetoothGattCallback ay humahawak ng mga event: koneksyon, pagtuklas ng serbisyo, pagbasa ng katangian, pagbabago ng RSSI.

Ang Bluetooth Low Energy sa mga mobile application sa Android ay nangangailangan ng tahasang mga pahintulot na BLUETOOTH_SCAN, BLUETOOTH_CONNECT at ACCESS_FINE_LOCATION. Mula noong Android 12, ang mga pahintulot ay hiwalay na: BLUETOOTH_SCAN para sa pag-scan, BLUETOOTH_CONNECT para sa pagkonekta. Ang ACCESS_FINE_LOCATION ay kinakailangan lamang para sa pag-scan ng ilang uri ng device. Kung wala ang mga pahintulot na ito, ang app ay hindi maaaring gumana sa BLE.

Halimbawa ng BLE Scanning sa 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", "Device: ${device.name}, RSSI: $rssi")
        }
    }
}

Ang ScanSettings ay nagpapahintulot sa iyo na i-configure ang scan mode: LOW_POWER para makatipid ng baterya, BALANCED para sa standard na gawain, LOW_LATENCY para sa maximum na bilis ng pagtuklas. ScanFilter ay nagpapaliit ng paghahanap ayon sa UUID ng serbisyo, pangalan ng device o MAC address. Ang pag-filter ay nagpapababa ng konsumo ng kuryente at nagpapabilis ng pagtuklas ng nais na device.

BluetoothGatt: Pagbasa at mga Notification sa Android

Pagkatapos lumikha ng BluetoothGatt sa pamamagitan ng connectGatt, ang app ay tumatawag ng discoverServices. BluetoothGattCallback ay naglalaman ng onServicesDiscovered, onCharacteristicRead, onCharacteristicChanged. Upang makatanggap ng mga notification tungkol sa mga pagbabago sa katangian, kailangang tawagan ang setCharacteristicNotification. Ang proseso ay nangangailangan ng atensyon: bawat GATT operation ay asincrono at ang resulta ay dumarating sa isang hiwalay na callback.

iBeacon, Bonding at Advertising Data sa BLE Ecosystem

Ang iBeacon ay teknolohiya ng Apple para sa mga BLE beacon na nagpapadala ng UUID, Major at Minor. Ang beacon device ay nag-broadcast ng advertising packet, at ang mobile application ay tumutukoy ng lokasyon at distansya batay sa data na ito. Sa iOS, ang iBeacon ay native na sinusuportahan sa pamamagitan ng CLLocationManager. Sa Android, kinakailangan ang third-party na library (halimbawa, AltBeacon o Android iBeacon Library).

Ang Bonding ay pamamaraan ng paglikha ng permanenteng secure na koneksyon sa pagitan ng mga BLE device. Pagkatapos ng Bonding, ang encryption key ay nai-save at ang mga device ay awtomatikong kumokonekta kapag sila ay muling nagkalapit. Sa iOS, ang bonding ay awtomatikong pinamamahalaan ng system. Sa Android — sa pamamagitan ng BluetoothDevice.createBond(). Ang Bonding ay mahalaga para sa mga wearable device at fitness tracker na nangangailangan ng mabilis na reconnection.

Advertising Packets at Manufacturer Specific Data

Ang Advertising Data ay isang pangunahing mekanismo ng pagtuklas sa Bluetooth Low Energy. Ang mga manufacturer ng device ay maaaring magdagdag ng Manufacturer Specific Data sa advertising packet upang magpadala ng custom na data. Ang format ng packet ay may kasamang Company Identifier (2 bytes) at arbitrary na data. Sa iOS, ang CBCentralManager ay tumatanggap ng array ng service UUID para sa pag-filter — ito ay nakakatipid ng baterya. Sa Android, ang ScanFilter ay gumagana sa parehong prinsipyo.

Paghahambing ng iOS at Android para sa BLE Development

ParameteriOS (Core Bluetooth)Android (BluetoothGatt)
ManagerCBCentralManagerBluetoothLeScanner
Koneksyonconnect(to:)connectGatt()
SerbisyodiscoverServices()discoverServices()
PagbasareadValue(for:)readCharacteristic()
NotificationsetNotifyValue(_:for:)setCharacteristicNotification()
PahintulotAwtomatikoBLUETOOTH_SCAN, BLUETOOTH_CONNECT
iBeaconCLLocationManager (native)AltBeacon / mga library

BLE Optimization: MTU, Connection Interval at Background Mode

Ang MTU (Maximum Transmission Unit) ay ang maximum na laki ng isang Bluetooth Low Energy data packet. Bilang default, ang MTU ay 23 bytes (3 bytes header + 20 bytes data). Ang pagtaas ng MTU sa 512 bytes ay makabuluhang nagpapabilis ng transmisyon kapag nagpapalitan ng mga configuration o log. Sa iOS, ang maximumWriteValueLength ay nagpapakita ng available na MTU. Sa Android, ang requestMtu() ay ginagamit upang taasan ang MTU.

Ang Connection Interval ay ang dalas kung saan ang central device ay nagsusuri sa peripheral. Kung mas maikli ang interval, mas mataas ang bilis ng transmisyon, ngunit mas malaki rin ang konsumo ng kuryente. Ang karaniwang halaga ay mula 7.5 ms hanggang 4 na segundo. Para sa fitness tracker, sapat na ang 100 ms; para sa audio — 7.5 ms. Ang BLE sa mobile development ay nangangailangan ng balanse sa pagitan ng bilis ng transmisyon at buhay ng baterya ng device.

Background Mode sa iOS at Android

Sinusuportahan ng iOS ang BLE sa background mode sa pamamagitan ng Background Modes, ngunit may mga limitasyon. Ang app sa background ay tumatanggap ng mga notification mula sa mga katangian ngunit hindi maaaring aktibong mag-scan. Ang system ay nag-restart ng pag-scan kapag nagbago ang lokasyon ng device. Sa Android, ang background scanning ay nangangailangan ng Foreground Service na may permanenteng notification. Kung wala ito, ang mobile system ay papatayin ang proseso kapag na-minimize ang app.

Mga Praktikal na Rekomendasyon sa Optimization

Para sa maaasahang operasyon ng BLE sa mga mobile application, sundin ang mga patakarang ito. Gamitin ang notify sa halip na polling — isang katangian na may mga notification ay nagpapadala ng data kapag nagbago ito, nakatitipid ng baterya. Itakda ang optimal na MTU sa simula ng koneksyon. I-filter ang mga device ayon sa UUID ng serbisyo kapag nag-scan. Suriin ang compatibility ng BLE stack sa iba't ibang modelo — ang mga manufacturer (Xiaomi, Huawei, Samsung) ay gumagawa ng mga pagbabago na nakakaapekto sa pag-uugali ng Bluetooth.

Mga Madalas Itanong

Paano naiiba ang BLE sa classic Bluetooth?

Ang Bluetooth Low Energy (BLE) ay na-optimize para sa pana-panahong pagpapadala ng maliliit na packet na may mababang konsumo ng kuryente. Ang classic Bluetooth ay dinisenyo para sa mga audio stream at tuluy-tuloy na pagpapadala ng malalaking volume ng data.

Ano ang GATT sa Bluetooth Low Energy?

Ang GATT (Generic Attribute Profile) ay isang data exchange protocol sa BLE na tumutukoy sa hierarchy na Service → Characteristic → Descriptor. Ang GATT ay ginagamit para magbasa, magsulat at makatanggap ng mga notification mula sa mga BLE device.

Bakit nangangailangan ang Android ng ACCESS_FINE_LOCATION permission para sa BLE?

Bago ang Android 12, ang BLE scanning ay maaaring gamitin upang matukoy ang lokasyon, kaya pinagsama ng Google ang mga pahintulot na ito. Mula noong Android 12, isang hiwalay na BLUETOOTH_SCAN permission na walang kinalaman sa lokasyon ay ipinakilala.

Paano pataasin ang bilis ng paglipat ng data ng BLE?

Taasan ang MTU sa pamamagitan ng requestMtu() sa Android at maximumWriteValueLength sa iOS. Ang Connection Interval ay nakakaapekto rin sa bilis — kung mas maliit ito, mas mabilis ang paglipat. Ang optimal na kombinasyon ay nagbibigay ng hanggang 10 beses na pagpapabuti.

Ano ang Bonding sa BLE?

Ang Bonding ay pamamaraan ng paglikha ng permanenteng secure na koneksyon sa pagitan ng mga BLE device. Pagkatapos ng Bonding, ang encryption key ay nai-save at ang mga device ay awtomatikong kumokonekta nang walang paulit-ulit na paghahanap.

Buod

  • Bluetooth Low Energy — wireless communication standard para sa IoT na may minimal na konsumo ng kuryente at bilis hanggang 2 Mbps
  • GATT ay nag-aayos ng data sa isang hierarchy na Service → Characteristic → Descriptor na may UUID para sa bawat elemento
  • Core Bluetooth — framework ng Apple para sa BLE sa iOS na may CBCentralManager, CBPeripheral at mga background mode
  • BluetoothGatt — pangunahing Android API na may BluetoothAdapter, BluetoothLeScanner at tahasang BLUETOOTH_SCAN permissions
  • iBeacon — BLE beacon technology na may native na suporta sa iOS sa pamamagitan ng CLLocationManager
  • Bonding ay nagpapagana ng awtomatikong reconnection pagkatapos i-save ang encryption key
  • Ang Bluetooth Low Energy sa mga mobile application ay nangangailangan ng pagsasaalang-alang ng MTU, Connection Interval at mga limitasyon sa background ng platform

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto