Bluetooth Low Energy (BLE) dalam Pengembangan Seluler: Apa Itu, Protokol, dan Cara Kerjanya

Penulis: IT Sectr Diterbitkan: 2026-07-25 Waktu membaca: 11 mnt

Bluetooth Low Energy (BLE) adalah standar komunikasi nirkabel yang dioptimalkan untuk mentransmisikan data dalam jumlah kecil dengan konsumsi daya minimal. Menurut Bluetooth SIG, 2025, teknologi ini digunakan di lebih dari 5 miliar perangkat di seluruh dunia. GATT (Generic Attribute Profile) mengatur data dalam hierarki Service → Characteristic → Descriptor, yang menjadi dasar semua aplikasi BLE untuk iOS dan Android.

Poin Penting

  • GATT — protokol pertukaran data di Bluetooth Low Energy dengan hierarki Service → Characteristic → Descriptor
  • Core Bluetooth — framework Apple untuk bekerja dengan BLE di iOS, berbasis CBCentralManager dan CBPeripheral
  • BluetoothGatt — API utama untuk koneksi BLE di Android melalui BluetoothLeScanner
  • iBeacon — protokol beacon BLE Apple dengan dukungan asli melalui CLLocationManager di iOS
  • Bonding — koneksi terenkripsi permanen yang menghilangkan pemindaian dan pemasangan berulang

Apa itu Bluetooth Low Energy (BLE) dan bagaimana cara kerjanya?

Bluetooth Low Energy (BLE) bekerja dengan model klien-server dengan dua peran: Central (perangkat seluler) dan Peripheral (perangkat). Central memindai gelombang udara dan memulai koneksi, sementara Peripheral mentransmisikan data. Tidak seperti Bluetooth klasik, BLE tidak dirancang untuk aliran audio — tugasnya adalah mentransmisikan paket kecil dengan konsumsi daya minimal. Menurut Bluetooth SIG Core Specification 5.4 (2025), BLE mendukung kecepatan hingga 2 Mbps dengan arus kurang dari 15 mA dalam mode aktif.

Hierarki GATT: Service, Characteristic, Descriptor

GATT (Generic Attribute Profile) mendefinisikan struktur data Bluetooth Low Energy. Service adalah grup logis karakteristik (misalnya, Heart Rate Service 0x180D). Characteristic adalah titik data dengan nilai tertentu. Descriptor adalah metadata karakteristik, termasuk CCCD untuk manajemen notifikasi. Setiap elemen memiliki UUID — 16-bit untuk profil Bluetooth SIG standar atau 128-bit untuk kustom.

Bluetooth Low Energy dalam aplikasi seluler menggunakan hierarki ini untuk mengatur pertukaran data antara ponsel cerdas dan periferal. Pemahaman yang benar tentang GATT adalah dasar pengembangan aplikasi BLE di kedua platform. Pengembang harus mengetahui UUID layanan dan karakteristik perangkat, serta properti setiap karakteristik (read, write, notify, indicate).

Advertising Data dan Scan Response

Perangkat BLE mentransmisikan paket iklan (advertising packets) untuk deteksi. Advertising Data berisi nama perangkat, UUID layanan, RSSI, dan Manufacturer Specific Data. Ukuran paket iklan dibatasi hingga 31 byte. Untuk mentransmisikan data tambahan, digunakan Scan Response — paket kedua yang diminta perangkat pusat setelah deteksi.

BLE di iOS: Core Bluetooth, CBCentralManager, CBPeripheral

Di iOS, framework Core Bluetooth menangani Bluetooth Low Energy. CBCentralManager mengelola pemindaian dan koneksi, CBPeripheral mewakili perangkat BLE jarak jauh. Prosesnya standar: menginisialisasi CBCentralManager, memeriksa status poweredOn, memulai scanForPeripherals, menghubungkan, dan menemukan layanan. Core Bluetooth secara otomatis mengelola daya modul radio — jika BLE tidak digunakan, ia akan mati.

BLE dalam pengembangan seluler di iOS memerlukan pertimbangan mode latar belakang. Mode latar belakang Core Bluetooth diaktifkan melalui Capabilities proyek (Uses Bluetooth LE accessories). Di latar belakang, aplikasi dapat menerima notifikasi dari karakteristik, tetapi pemindaian terbatas — sistem memulainya kembali hanya saat perangkat bergerak. Untuk iBeacon, pemindaian latar belakang bekerja lebih aktif melalui CLLocationManager.

Contoh Pemindaian BLE di 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("Ditemukan: \(peripheral.name ?? "unknown")")
    }
}

Dalam contoh ini, CBCentralManagerDelegate menangani semua peristiwa koneksi BLE. Metode centralManagerDidUpdateState memeriksa apakah Bluetooth diaktifkan di perangkat seluler. Setelah inisialisasi berhasil, pemindaian dimulai. Callback didDiscover dipanggil untuk setiap perangkat yang ditemukan.

Menghubungkan dan Membaca Karakteristik di Core Bluetooth

Setelah menemukan perangkat, perlu memanggil connect dan discoverServices. CBPeripheralDelegate menyediakan metode untuk menangani setiap langkah: didDiscoverServices, didDiscoverCharacteristics, didUpdateValueFor. Setiap metode bersifat asinkron — data datang melalui callback delegasi. RSSI (Received Signal Strength Indicator) menunjukkan level sinyal: semakin dekat nilai ke 0, semakin kuat sinyal.

BLE di Android: BluetoothAdapter, BluetoothGatt, BluetoothLeScanner

Di Android, Bluetooth Low Energy diimplementasikan melalui paket android.bluetooth. BluetoothAdapter adalah titik masuk untuk semua operasi BLE. BluetoothLeScanner memulai pemindaian dengan callback ScanCallback. Setelah menemukan perangkat, BluetoothGatt dibuat — koneksi ke periferal. BluetoothGattCallback menangani peristiwa: koneksi, penemuan layanan, pembacaan karakteristik, perubahan RSSI.

Bluetooth Low Energy dalam aplikasi seluler di Android memerlukan izin eksplisit BLUETOOTH_SCAN, BLUETOOTH_CONNECT, dan ACCESS_FINE_LOCATION. Sejak Android 12, izin dipisahkan: BLUETOOTH_SCAN untuk pemindaian, BLUETOOTH_CONNECT untuk koneksi. ACCESS_FINE_LOCATION hanya diperlukan untuk memindai jenis perangkat tertentu. Tanpa izin ini, aplikasi tidak dapat bekerja dengan BLE.

Contoh Pemindaian BLE di 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", "Perangkat: ${device.name}, RSSI: $rssi")
        }
    }
}

ScanSettings memungkinkan Anda mengonfigurasi mode pemindaian: LOW_POWER untuk menghemat baterai, BALANCED untuk tugas standar, LOW_LATENCY untuk kecepatan deteksi maksimum. ScanFilter mempersempit pencarian berdasarkan UUID layanan, nama perangkat, atau alamat MAC. Penyaringan mengurangi konsumsi daya dan mempercepat deteksi perangkat yang diinginkan.

BluetoothGatt: Pembacaan dan Notifikasi di Android

Setelah membuat BluetoothGatt melalui connectGatt, aplikasi memanggil discoverServices. BluetoothGattCallback berisi onServicesDiscovered, onCharacteristicRead, onCharacteristicChanged. Untuk menerima notifikasi tentang perubahan karakteristik, perlu memanggil setCharacteristicNotification. Prosesnya memerlukan perhatian: setiap operasi GATT bersifat asinkron dan hasilnya datang dalam callback terpisah.

iBeacon, Bonding, dan Advertising Data di Ekosistem BLE

iBeacon adalah teknologi Apple untuk beacon BLE yang mentransmisikan UUID, Major, dan Minor. Perangkat beacon menyiarkan paket iklan, dan aplikasi seluler menentukan lokasi dan jarak berdasarkan data ini. Di iOS, iBeacon didukung secara asli melalui CLLocationManager. Di Android, diperlukan pustaka pihak ketiga (misalnya, AltBeacon atau Android iBeacon Library).

Bonding adalah prosedur untuk membuat koneksi aman permanen antara perangkat BLE. Setelah Bonding, kunci enkripsi disimpan dan perangkat terhubung secara otomatis saat berada dalam jarak dekat lagi. Di iOS, bonding dikelola secara otomatis oleh sistem. Di Android — melalui BluetoothDevice.createBond(). Bonding penting untuk perangkat yang dapat dikenakan dan pelacak kebugaran yang memerlukan koneksi ulang cepat.

Paket Iklan dan Manufacturer Specific Data

Advertising Data adalah mekanisme deteksi utama di Bluetooth Low Energy. Produsen perangkat dapat menambahkan Manufacturer Specific Data ke paket iklan untuk mentransmisikan data kustom. Format paket mencakup Company Identifier (2 byte) dan data arbitrer. Di iOS, CBCentralManager menerima array UUID layanan untuk penyaringan — ini menghemat baterai. Di Android, ScanFilter bekerja dengan prinsip yang sama.

Perbandingan iOS dan Android untuk Pengembangan BLE

ParameteriOS (Core Bluetooth)Android (BluetoothGatt)
ManajerCBCentralManagerBluetoothLeScanner
Koneksiconnect(to:)connectGatt()
LayanandiscoverServices()discoverServices()
PembacaanreadValue(for:)readCharacteristic()
NotifikasisetNotifyValue(_:for:)setCharacteristicNotification()
IzinOtomatisBLUETOOTH_SCAN, BLUETOOTH_CONNECT
iBeaconCLLocationManager (asli)AltBeacon / pustaka

Optimasi BLE: MTU, Connection Interval, dan Mode Latar Belakang

MTU (Maximum Transmission Unit) adalah ukuran maksimum satu paket data Bluetooth Low Energy. Secara default, MTU adalah 23 byte (3 byte header + 20 byte data). Meningkatkan MTU menjadi 512 byte secara signifikan mempercepat transmisi saat bertukar konfigurasi atau log. Di iOS, maximumWriteValueLength menunjukkan MTU yang tersedia. Di Android, requestMtu() digunakan untuk meningkatkan MTU.

Connection Interval adalah frekuensi perangkat pusat melakukan polling ke periferal. Semakin pendek intervalnya, semakin tinggi kecepatan transmisi, tetapi juga konsumsi daya. Nilai tipikal berkisar dari 7,5 ms hingga 4 detik. Untuk pelacak kebugaran, 100 ms sudah cukup; untuk audio — 7,5 ms. BLE dalam pengembangan seluler memerlukan keseimbangan antara kecepatan transmisi dan masa pakai baterai perangkat.

Mode Latar Belakang di iOS dan Android

iOS mendukung BLE di latar belakang melalui Background Modes, tetapi dengan batasan. Aplikasi di latar belakang menerima notifikasi dari karakteristik tetapi tidak dapat memindai secara aktif. Sistem memulai ulang pemindaian saat lokasi perangkat berubah. Di Android, pemindaian latar belakang memerlukan Foreground Service dengan notifikasi persisten. Tanpa ini, sistem seluler akan mematikan proses saat aplikasi diminimalkan.

Rekomendasi Optimasi Praktis

Untuk pengoperasian BLE yang andal dalam aplikasi seluler, ikuti aturan ini. Gunakan notify daripada polling — karakteristik dengan notifikasi mengirim data saat berubah, menghemat baterai. Tetapkan MTU optimal di awal koneksi. Filter perangkat berdasarkan UUID layanan saat memindai. Periksa kompatibilitas tumpukan BLE pada model yang berbeda — produsen (Xiaomi, Huawei, Samsung) melakukan perubahan yang memengaruhi perilaku Bluetooth.

Pertanyaan yang Sering Diajukan

Bagaimana BLE berbeda dari Bluetooth klasik?

Bluetooth Low Energy (BLE) dioptimalkan untuk transmisi periodik paket kecil dengan konsumsi daya rendah. Bluetooth klasik dirancang untuk aliran audio dan transmisi berkelanjutan data dalam jumlah besar.

Apa itu GATT dalam Bluetooth Low Energy?

GATT (Generic Attribute Profile) adalah protokol pertukaran data di BLE yang mendefinisikan hierarki Service → Characteristic → Descriptor. GATT digunakan untuk membaca, menulis, dan menerima notifikasi dari perangkat BLE.

Mengapa Android memerlukan izin ACCESS_FINE_LOCATION untuk BLE?

Sebelum Android 12, pemindaian BLE dapat digunakan untuk menentukan lokasi, sehingga Google menggabungkan izin ini. Sejak Android 12, izin BLUETOOTH_SCAN terpisah tanpa kaitan lokasi telah diperkenalkan.

Bagaimana cara meningkatkan kecepatan transfer data BLE?

Tingkatkan MTU melalui requestMtu() di Android dan maximumWriteValueLength di iOS. Connection Interval juga memengaruhi kecepatan — semakin kecil, semakin cepat transfer. Kombinasi optimal memberikan peningkatan hingga 10 kali lipat.

Apa itu Bonding dalam BLE?

Bonding adalah prosedur untuk membuat koneksi aman permanen antara perangkat BLE. Setelah Bonding, kunci enkripsi disimpan dan perangkat terhubung secara otomatis tanpa pencarian berulang.

Ringkasan

  • Bluetooth Low Energy — standar komunikasi nirkabel untuk IoT dengan konsumsi daya minimal dan kecepatan hingga 2 Mbps
  • GATT mengatur data dalam hierarki Service → Characteristic → Descriptor dengan UUID untuk setiap elemen
  • Core Bluetooth — framework Apple untuk BLE di iOS dengan CBCentralManager, CBPeripheral, dan mode latar belakang
  • BluetoothGatt — API Android utama dengan BluetoothAdapter, BluetoothLeScanner, dan izin eksplisit BLUETOOTH_SCAN
  • iBeacon — teknologi beacon BLE dengan dukungan asli di iOS melalui CLLocationManager
  • Bonding memungkinkan koneksi ulang otomatis setelah menyimpan kunci enkripsi
  • Bluetooth Low Energy dalam aplikasi seluler memerlukan pertimbangan MTU, Connection Interval, dan batasan latar belakang platform

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek