Bluetooth Low Energy (BLE) ایک وائرلیس مواصلاتی معیار ہے جو کم سے کم بجلی کی کھپت کے ساتھ تھوڑی مقدار میں ڈیٹا منتقل کرنے کے لیے بہتر بنایا گیا ہے۔ Bluetooth SIG، 2025 کے مطابق، یہ ٹیکنالوجی دنیا بھر میں 5 بلین سے زیادہ آلات میں استعمال ہوتی ہے۔ GATT (Generic Attribute Profile) ڈیٹا کو Service → Characteristic → Descriptor کے درجہ بندی میں ترتیب دیتا ہے، جو iOS اور Android کے لیے تمام BLE ایپلیکیشنز کی بنیاد ہے۔
اہم نکات
Bluetooth Low Energy (BLE) دو کرداروں (Central (موبائل آلہ) اور Peripheral (آلہ)) کے ساتھ کلائنٹ-سرور ماڈل پر کام کرتا ہے۔ Central ہوا کی لہروں کو اسکین کرتا ہے اور کنکشن شروع کرتا ہے، جبکہ Peripheral ڈیٹا منتقل کرتا ہے۔ کلاسک Bluetooth کے برعکس، BLE آڈیو سٹریمز کے لیے ڈیزائن نہیں کیا گیا — اس کا کام کم سے کم بجلی کی کھپت کے ساتھ چھوٹے پیکٹ منتقل کرنا ہے۔ Bluetooth SIG Core Specification 5.4 (2025) کے مطابق، BLE فعال موڈ میں 15 mA سے کم کرنٹ پر 2 Mbps تک کی رفتار کو سپورٹ کرتا ہے۔
GATT (Generic Attribute Profile) Bluetooth Low Energy کے ڈیٹا ڈھانچے کی وضاحت کرتا ہے۔ Service خصوصیات کا ایک منطقی گروپ ہے (مثال کے طور پر، Heart Rate Service 0x180D)۔ Characteristic ایک مخصوص قدر کے ساتھ ڈیٹا پوائنٹ ہے۔ Descriptor خصوصیت کا میٹا ڈیٹا ہے، جس میں اطلاع کے انتظام کے لیے CCCD شامل ہے۔ ہر عنصر کا ایک UUID ہوتا ہے — معیاری Bluetooth SIG پروفائلز کے لیے 16 بٹ یا حسب ضرورت کے لیے 128 بٹ۔
موبائل ایپلیکیشنز میں Bluetooth Low Energy اس درجہ بندی کو اسمارٹ فون اور پیرفرل آلات کے درمیان ڈیٹا کے تبادلے کو منظم کرنے کے لیے استعمال کرتا ہے۔ GATT کی صحیح سمجھ دونوں پلیٹ فارمز پر BLE ایپلیکیشنز تیار کرنے کی بنیاد ہے۔ ڈویلپر کو آلہ کی خدمات اور خصوصیات کے UUIDs کے ساتھ ساتھ ہر خصوصیت کی خصوصیات (read، write، notify، indicate) جاننی چاہئیں۔
BLE آلات دریافت کے لیے اشتہاری پیکٹ (advertising packets) منتقل کرتے ہیں۔ Advertising Data میں آلہ کا نام، خدمات کے UUIDs، RSSI اور Manufacturer Specific Data شامل ہوتا ہے۔ اشتہاری پیکٹ کا سائز 31 بائٹس تک محدود ہے۔ اضافی ڈیٹا منتقل کرنے کے لیے Scan Response استعمال کیا جاتا ہے — ایک دوسرا پیکٹ جو مرکزی آلہ دریافت کے بعد درخواست کرتا ہے۔
iOS پر، Core Bluetooth فریم ورک Bluetooth Low Energy کو سنبھالتا ہے۔ CBCentralManager اسکیننگ اور کنکشن کا انتظام کرتا ہے، CBPeripheral ایک ریموٹ BLE آلہ کی نمائندگی کرتا ہے۔ عمل معیاری ہے: CBCentralManager کو شروع کرنا، poweredOn حالت کی جانچ کرنا، scanForPeripherals شروع کرنا، جڑنا اور خدمات دریافت کرنا۔ Core Bluetooth خود بخود ریڈیو ماڈیول کی بجلی کا انتظام کرتا ہے — اگر BLE استعمال نہیں ہو رہا تو یہ بند ہو جاتا ہے۔
iOS پر موبائل ڈیولپمنٹ میں BLE کے لیے پس منظر کے طریقوں پر غور کرنا ضروری ہے۔ Core Bluetooth پس منظر موڈ پروجیکٹ کی Capabilities (Uses Bluetooth LE accessories) کے ذریعے فعال کیا جاتا ہے۔ پس منظر میں، ایپ خصوصیات سے اطلاعیں حاصل کر سکتا ہے، لیکن اسکیننگ محدود ہے — نظام صرف آلہ کے حرکت کرنے پر اسکیننگ دوبارہ شروع کرتا ہے۔ iBeacon کے لیے، CLLocationManager کے ذریعے پس منظر اسکیننگ زیادہ فعال طور پر کام کرتی ہے۔
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("مل گیا: \(peripheral.name ?? "unknown")")
}
}
اس مثال میں، CBCentralManagerDelegate تمام BLE کنکشن واقعات کو ہینڈل کرتا ہے۔ centralManagerDidUpdateState طریقہ چیک کرتا ہے کہ آیا موبائل آلہ پر Bluetooth فعال ہے۔ کامیاب آغاز کے بعد، اسکیننگ شروع ہوتی ہے۔ ہر ملنے والے آلہ کے لیے didDiscover کال بیک بلایا جاتا ہے۔
آلہ دریافت کرنے کے بعد، connect اور discoverServices کو کال کرنا ضروری ہے۔ CBPeripheralDelegate ہر قدم کو سنبھالنے کے لیے طریقے فراہم کرتا ہے: didDiscoverServices، didDiscoverCharacteristics، didUpdateValueFor۔ ہر طریقہ غیر متزامن ہے — ڈیٹا ڈیلیگیٹ کال بیک کے ذریعے آتا ہے۔ RSSI (Received Signal Strength Indicator) سگنل کی سطح دکھاتا ہے: قدر جتنی 0 کے قریب ہوگی، سگنل اتنا ہی مضبوط ہوگا۔
Android پر، Bluetooth Low Energy android.bluetooth پیکج کے ذریعے لاگو کیا جاتا ہے۔ BluetoothAdapter تمام BLE آپریشنز کے لیے داخلے کا نقطہ ہے۔ BluetoothLeScanner ScanCallback کال بیک کے ساتھ اسکیننگ شروع کرتا ہے۔ آلہ دریافت کرنے کے بعد، BluetoothGatt بنایا جاتا ہے — پیرفرل سے کنکشن۔ BluetoothGattCallback واقعات کو ہینڈل کرتا ہے: کنکشن، خدمات کی دریافت، خصوصیات پڑھنا، RSSI تبدیلیاں۔
Android پر موبائل ایپلیکیشنز میں Bluetooth Low Energy کے لیے واضح BLUETOOTH_SCAN، BLUETOOTH_CONNECT اور ACCESS_FINE_LOCATION اجازتیں درکار ہیں۔ Android 12 سے اجازتیں الگ کر دی گئی ہیں: اسکیننگ کے لیے BLUETOOTH_SCAN، جڑنے کے لیے BLUETOOTH_CONNECT۔ ACCESS_FINE_LOCATION صرف مخصوص قسم کے آلات کو اسکین کرنے کے لیے درکار ہے۔ ان اجازتوں کے بغیر، ایپ BLE کے ساتھ کام نہیں کر سکتی۔
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.name}، RSSI: $rssi")
}
}
}
ScanSettings آپ کو اسکیننگ موڈ ترتیب دینے کی اجازت دیتا ہے: بیٹری بچانے کے لیے LOW_POWER، معیاری کاموں کے لیے BALANCED، زیادہ سے زیادہ دریافت کی رفتار کے لیے LOW_LATENCY۔ ScanFilter سروس UUID، آلہ کے نام یا MAC پتے کے ذریعے تلاش کو محدود کرتا ہے۔ فلٹرنگ بجلی کی کھپت کو کم کرتی ہے اور مطلوبہ آلہ کی دریافت کو تیز کرتی ہے۔
connectGatt کے ذریعے BluetoothGatt بنانے کے بعد، ایپ discoverServices کو کال کرتی ہے۔ BluetoothGattCallback میں onServicesDiscovered، onCharacteristicRead، onCharacteristicChanged شامل ہیں۔ خصوصیت کی تبدیلیوں کے بارے میں اطلاعیں حاصل کرنے کے لیے، setCharacteristicNotification کو کال کرنا ضروری ہے۔ عمل میں توجہ درکار ہے: ہر GATT آپریشن غیر متزامن ہے، اور نتیجہ ایک علیحدہ کال بیک میں آتا ہے۔
iBeacon BLE بیکنز کے لیے Apple کی ٹیکنالوجی ہے جو UUID، Major اور Minor منتقل کرتی ہے۔ بیکن آلہ ایک اشتہاری پیکٹ نشر کرتا ہے، اور موبائل ایپلیکیشن اس ڈیٹا کی بنیاد پر مقام اور فاصلہ متعین کرتی ہے۔ iOS پر، iBeacon CLLocationManager کے ذریعے مقامی طور پر تعاون یافتہ ہے۔ Android پر، تیسرے فریق کی لائبریری درکار ہے (مثال کے طور پر، AltBeacon یا Android iBeacon Library)۔
Bonding BLE آلات کے درمیان ایک مستقل محفوظ کنکشن بنانے کا طریقہ کار ہے۔ Bonding کے بعد، خفیہ کاری کی چابیاں محفوظ ہو جاتی ہیں، اور آلات دوبارہ قریب آنے پر خود بخود جڑ جاتے ہیں۔ iOS پر، bonding نظام کے ذریعے خود بخود منظم کیا جاتا ہے۔ Android پر — BluetoothDevice.createBond() کے ذریعے۔ Bonding پہننے کے قابل آلات اور فٹنس ٹریکرز کے لیے اہم ہے جنہیں فوری دوبارہ کنکشن درکار ہوتا ہے۔
Advertising Data Bluetooth Low Energy میں ایک اہم دریافت کا طریقہ کار ہے۔ آلہ بنانے والے حسب ضرورت ڈیٹا منتقل کرنے کے لیے اشتہاری پیکٹ میں Manufacturer Specific Data شامل کر سکتے ہیں۔ پیکٹ کی شکل میں Company Identifier (2 بائٹ) اور صوابدیدی ڈیٹا شامل ہے۔ iOS پر، CBCentralManager فلٹرنگ کے لیے سروس UUIDs کی ایک صف قبول کرتا ہے — یہ بیٹری بچاتا ہے۔ Android پر، ScanFilter اسی اصول پر کام کرتا ہے۔
| پیرامیٹر | iOS (Core Bluetooth) | Android (BluetoothGatt) |
|---|---|---|
| منیجر | CBCentralManager | BluetoothLeScanner |
| کنکشن | connect(to:) | connectGatt() |
| خدمات | discoverServices() | discoverServices() |
| پڑھنا | readValue(for:) | readCharacteristic() |
| اطلاعیں | setNotifyValue(_:for:) | setCharacteristicNotification() |
| اجازتیں | خودکار | BLUETOOTH_SCAN، BLUETOOTH_CONNECT |
| iBeacon | CLLocationManager (مقامی) | AltBeacon / لائبریریاں |
MTU (Maximum Transmission Unit) ایک واحد Bluetooth Low Energy ڈیٹا پیکٹ کا زیادہ سے زیادہ سائز ہے۔ پہلے سے طے شدہ طور پر، MTU 23 بائٹ ہے (3 بائٹ ہیڈر + 20 بائٹ ڈیٹا)۔ MTU کو 512 بائٹ تک بڑھانا کنفیگریشن یا لاگ کے تبادلے میں ترسیل کو نمایاں طور پر تیز کرتا ہے۔ iOS پر، maximumWriteValueLength دستیاب MTU دکھاتا ہے۔ Android پر، MTU بڑھانے کے لیے requestMtu() استعمال کیا جاتا ہے۔
Connection Interval وہ تعدد ہے جس کے ساتھ مرکزی آلہ پیرفرل سے استفسار کرتا ہے۔ وقفہ جتنا چھوٹا ہوگا، ترسیل کی رفتار اتنی ہی زیادہ ہوگی، لیکن بجلی کی کھپت بھی اتنی ہی زیادہ ہوگی۔ عام اقدار 7.5 ms سے 4 سیکنڈ تک ہوتی ہیں۔ فٹنس ٹریکرز کے لیے، 100 ms کافی ہے؛ آڈیو کے لیے — 7.5 ms۔ موبائل ڈیولپمنٹ میں BLE کو ترسیل کی رفتار اور آلہ کی بیٹری کی زندگی کے درمیان توازن درکار ہے۔
iOS Background Modes کے ذریعے پس منظر میں BLE کو سپورٹ کرتا ہے، لیکن حدود کے ساتھ۔ پس منظر میں ایپ خصوصیات سے اطلاعیں وصول کرتی ہے لیکن فعال طور پر اسکین نہیں کر سکتی۔ نظام آلہ کے مقام کی تبدیلی پر اسکیننگ دوبارہ شروع کرتا ہے۔ Android پر، پس منظر اسکیننگ کے لیے ایک مستقل اطلاع کے ساتھ Foreground Service درکار ہے۔ اس کے بغیر، موبائل نظام ایپ کو کم سے کم کرنے پر عمل کو ختم کر دے گا۔
موبائل ایپلیکیشنز میں قابل اعتماد BLE آپریشن کے لیے، ان اصولوں پر عمل کریں۔ پولنگ کے بجائے notify استعمال کریں — اطلاعوں والی خصوصیت تبدیلی پر ڈیٹا بھیجتی ہے، بیٹری بچاتی ہے۔ کنکشن کے شروع میں بہترین MTU سیٹ کریں۔ اسکین کرتے وقت سروس UUID کے ذریعے آلات کو فلٹر کریں۔ مختلف ماڈلز پر BLE اسٹیک کی مطابقت چیک کریں — مینوفیکچررز (Xiaomi، Huawei، Samsung) Bluetooth کے رویے کو متاثر کرنے والی تبدیلیاں کرتے ہیں۔
اکثر پوچھے گئے سوالات
Bluetooth Low Energy (BLE) کم بجلی کی کھپت کے ساتھ چھوٹے پیکٹ کی متواتر ترسیل کے لیے بہتر بنایا گیا ہے۔ کلاسک Bluetooth آڈیو سٹریمز اور بڑی مقدار میں ڈیٹا کی مسلسل ترسیل کے لیے ڈیزائن کیا گیا ہے۔
GATT (Generic Attribute Profile) BLE میں ڈیٹا کے تبادلے کا پروٹوکول ہے جو Service → Characteristic → Descriptor کے درجہ بندی کی وضاحت کرتا ہے۔ GATT BLE آلات سے ڈیٹا پڑھنے، لکھنے اور اطلاعیں حاصل کرنے کے لیے استعمال ہوتا ہے۔
Android 12 سے پہلے، BLE اسکیننگ مقام کے تعین کے لیے استعمال ہو سکتی تھی، اس لیے Google نے ان اجازتوں کو ملا دیا۔ Android 12 سے، مقام سے علیحدہ BLUETOOTH_SCAN کی اجازت متعارف کرائی گئی ہے۔
Android پر requestMtu() اور iOS پر maximumWriteValueLength کے ذریعے MTU بڑھائیں۔ Connection Interval بھی رفتار کو متاثر کرتا ہے — یہ جتنا چھوٹا ہوگا، منتقلی اتنی ہی تیز ہوگی۔ بہترین امتزاج 10 گنا تک بہتری فراہم کرتا ہے۔
Bonding BLE آلات کے درمیان ایک مستقل محفوظ کنکشن بنانے کا طریقہ کار ہے۔ Bonding کے بعد، خفیہ کاری کی چابیاں محفوظ ہو جاتی ہیں، اور آلات بار بار تلاش کیے بغیر خود بخود جڑ جاتے ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔