Bluetooth Low Energy (BLE) मोबाइल डेवलपमेंट में: यह क्या है, प्रोटोकॉल और कैसे काम करता है

लेखक: IT Sectr प्रकाशित: 2026-07-25 पढ़ने का समय: 11 मिनट

Bluetooth Low Energy (BLE) एक वायरलेस संचार मानक है जो न्यूनतम बिजली खपत के साथ छोटी मात्रा में डेटा संचारित करने के लिए अनुकूलित है। Bluetooth SIG, 2025 के अनुसार, यह तकनीक दुनिया भर में 5 बिलियन से अधिक उपकरणों में उपयोग की जाती है। GATT (Generic Attribute Profile) डेटा को Service → Characteristic → Descriptor पदानुक्रम में व्यवस्थित करता है, जो iOS और Android के लिए सभी BLE एप्लिकेशन का आधार है।

मुख्य बिंदु

  • GATT — Bluetooth Low Energy में डेटा आदान-प्रदान प्रोटोकॉल जिसमें Service → Characteristic → Descriptor पदानुक्रम है
  • Core Bluetooth — iOS पर BLE के साथ काम करने के लिए Apple का फ्रेमवर्क, CBCentralManager और CBPeripheral पर आधारित
  • BluetoothGatt — BluetoothLeScanner के माध्यम से Android पर BLE कनेक्शन के लिए मुख्य API
  • iBeacon — iOS पर CLLocationManager के माध्यम से मूल समर्थन के साथ Apple का BLE बीकन प्रोटोकॉल
  • Bonding — एक स्थायी एन्क्रिप्टेड कनेक्शन जो बार-बार स्कैनिंग और पेयरिंग को समाप्त करता है

Bluetooth Low Energy (BLE) क्या है और यह कैसे काम करता है?

Bluetooth Low Energy (BLE) दो भूमिकाओं के साथ क्लाइंट-सर्वर मॉडल पर काम करता है: Central (मोबाइल डिवाइस) और Peripheral (उपकरण)। Central वायु तरंगों को स्कैन करता है और कनेक्शन शुरू करता है, जबकि Peripheral डेटा संचारित करता है। क्लासिक Bluetooth के विपरीत, BLE ऑडियो स्ट्रीम के लिए डिज़ाइन नहीं किया गया है — इसका कार्य न्यूनतम बिजली खपत के साथ छोटे पैकेट संचारित करना है। Bluetooth SIG Core Specification 5.4 (2025) के अनुसार, BLE सक्रिय मोड में 15 mA से कम करंट पर 2 Mbps तक की गति का समर्थन करता है।

GATT पदानुक्रम: Service, Characteristic, Descriptor

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 एप्लिकेशन विकसित करने का आधार है। डेवलपर को डिवाइस की सेवाओं और विशेषताओं के UUID, साथ ही प्रत्येक विशेषता के गुणों (read, write, notify, indicate) को जानना चाहिए।

Advertising Data और Scan Response

BLE उपकरण खोज के लिए विज्ञापन पैकेट (advertising packets) संचारित करते हैं। Advertising Data में डिवाइस का नाम, सेवा UUID, RSSI और Manufacturer Specific Data होता है। विज्ञापन पैकेट का आकार 31 बाइट्स तक सीमित है। अतिरिक्त डेटा संचारित करने के लिए Scan Response का उपयोग किया जाता है — एक दूसरा पैकेट जो केंद्रीय उपकरण खोज के बाद अनुरोध करता है।

iOS पर BLE: Core Bluetooth, CBCentralManager, CBPeripheral

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 के माध्यम से अधिक सक्रिय रूप से काम करती है।

Swift में BLE स्कैनिंग का उदाहरण

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("मिला: \(peripheral.name ?? "unknown")")
    }
}

इस उदाहरण में, CBCentralManagerDelegate सभी BLE कनेक्शन घटनाओं को संभालता है। centralManagerDidUpdateState विधि जांचती है कि मोबाइल डिवाइस पर Bluetooth चालू है या नहीं। सफल आरंभीकरण के बाद, स्कैनिंग शुरू होती है। प्रत्येक मिले डिवाइस के लिए didDiscover कॉलबैक लागू होता है।

Core Bluetooth में कनेक्ट करना और विशेषताएँ पढ़ना

डिवाइस की खोज के बाद, आपको connect और discoverServices को कॉल करना होगा। CBPeripheralDelegate प्रत्येक चरण को संभालने के लिए विधियाँ प्रदान करता है: didDiscoverServices, didDiscoverCharacteristics, didUpdateValueFor। प्रत्येक विधि अतुल्यकालिक है — डेटा डेलिगेट कॉलबैक के माध्यम से आता है। RSSI (Received Signal Strength Indicator) सिग्नल स्तर दिखाता है: मान 0 के जितना करीब होगा, सिग्नल उतना ही मजबूत होगा।

Android पर BLE: BluetoothAdapter, BluetoothGatt, BluetoothLeScanner

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 के साथ काम नहीं कर सकता।

Kotlin में BLE स्कैनिंग का उदाहरण

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

ScanSettings आपको स्कैनिंग मोड कॉन्फ़िगर करने की अनुमति देता है: बैटरी बचाने के लिए LOW_POWER, मानक कार्यों के लिए BALANCED, अधिकतम खोज गति के लिए LOW_LATENCY। ScanFilter सेवा UUID, डिवाइस नाम या MAC पते द्वारा खोज को संकुचित करता है। फ़िल्टरिंग बिजली की खपत को कम करती है और वांछित डिवाइस की खोज को तेज करती है।

BluetoothGatt: Android पर पढ़ना और सूचनाएँ

connectGatt के माध्यम से BluetoothGatt बनाने के बाद, ऐप discoverServices को कॉल करता है। BluetoothGattCallback में onServicesDiscovered, onCharacteristicRead, onCharacteristicChanged शामिल हैं। विशेषता परिवर्तनों के बारे में सूचनाएं प्राप्त करने के लिए, आपको setCharacteristicNotification कॉल करना होगा। प्रक्रिया में सावधानी की आवश्यकता है: प्रत्येक GATT संचालन अतुल्यकालिक है, और परिणाम एक अलग कॉलबैक में आता है।

BLE इकोसिस्टम में iBeacon, Bonding और Advertising Data

iBeacon BLE बीकन के लिए Apple की तकनीक है जो UUID, Major और Minor संचारित करते हैं। बीकन डिवाइस एक विज्ञापन पैकेट प्रसारित करता है, और मोबाइल एप्लिकेशन इस डेटा के आधार पर स्थान और दूरी निर्धारित करता है। iOS पर, iBeacon CLLocationManager के माध्यम से मूल रूप से समर्थित है। Android पर, तृतीय-पक्ष लाइब्रेरी की आवश्यकता होती है (उदाहरण के लिए, AltBeacon या Android iBeacon Library)।

Bonding BLE उपकरणों के बीच एक स्थायी सुरक्षित कनेक्शन बनाने की प्रक्रिया है। Bonding के बाद, एन्क्रिप्शन कुंजियाँ सहेजी जाती हैं, और उपकरण फिर से पास आने पर स्वचालित रूप से कनेक्ट हो जाते हैं। iOS पर, बॉन्डिंग सिस्टम द्वारा स्वचालित रूप से प्रबंधित की जाती है। Android पर — BluetoothDevice.createBond() के माध्यम से। Bonding पहनने योग्य उपकरणों और फिटनेस ट्रैकर्स के लिए महत्वपूर्ण है जिन्हें त्वरित पुन: कनेक्शन की आवश्यकता होती है।

विज्ञापन पैकेट और Manufacturer Specific Data

Advertising Data Bluetooth Low Energy में एक प्रमुख खोज तंत्र है। डिवाइस निर्माता कस्टम डेटा संचारित करने के लिए विज्ञापन पैकेट में Manufacturer Specific Data जोड़ सकते हैं। पैकेट प्रारूप में Company Identifier (2 बाइट्स) और मनमाना डेटा शामिल है। iOS पर, CBCentralManager फ़िल्टरिंग के लिए सेवा UUID की एक सरणी स्वीकार करता है — इससे बैटरी बचती है। Android पर, ScanFilter उसी सिद्धांत पर काम करता है।

BLE डेवलपमेंट के लिए iOS और Android की तुलना

पैरामीटरiOS (Core Bluetooth)Android (BluetoothGatt)
प्रबंधकCBCentralManagerBluetoothLeScanner
कनेक्शनconnect(to:)connectGatt()
सेवाएँdiscoverServices()discoverServices()
पढ़नाreadValue(for:)readCharacteristic()
सूचनाएँsetNotifyValue(_:for:)setCharacteristicNotification()
अनुमतियाँस्वचालितBLUETOOTH_SCAN, BLUETOOTH_CONNECT
iBeaconCLLocationManager (मूल)AltBeacon / लाइब्रेरी

BLE ऑप्टिमाइज़ेशन: MTU, Connection Interval और बैकग्राउंड मोड

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 और Android पर बैकग्राउंड मोड

iOS बैकग्राउंड मोड के माध्यम से BLE का समर्थन करता है, लेकिन सीमाओं के साथ। बैकग्राउंड में ऐप विशेषताओं से सूचनाएं प्राप्त करता है, लेकिन सक्रिय रूप से स्कैन नहीं कर सकता। सिस्टम डिवाइस के स्थान बदलने पर स्कैनिंग पुनरारंभ करता है। Android पर, बैकग्राउंड स्कैनिंग के लिए एक स्थायी सूचना के साथ Foreground Service की आवश्यकता होती है। इसके बिना, मोबाइल सिस्टम ऐप को मिनिमाइज़ करने पर प्रक्रिया को समाप्त कर देगा।

व्यावहारिक ऑप्टिमाइज़ेशन अनुशंसाएँ

मोबाइल एप्लिकेशन में विश्वसनीय BLE संचालन के लिए, इन नियमों का पालन करें। पोलिंग के बजाय notify का उपयोग करें — सूचनाओं वाली विशेषता बदलने पर डेटा भेजती है, जिससे बैटरी बचती है। कनेक्शन की शुरुआत में इष्टतम MTU सेट करें। स्कैन करते समय सेवा UUID द्वारा उपकरणों को फ़िल्टर करें। विभिन्न मॉडलों पर BLE स्टैक संगतता की जांच करें — निर्माता (Xiaomi, Huawei, Samsung) Bluetooth व्यवहार को प्रभावित करने वाले परिवर्तन करते हैं।

अक्सर पूछे जाने वाले प्रश्न

BLE क्लासिक Bluetooth से कैसे अलग है?

Bluetooth Low Energy (BLE) कम बिजली खपत के साथ छोटे पैकेट के आवधिक संचरण के लिए अनुकूलित है। क्लासिक Bluetooth ऑडियो स्ट्रीम और बड़ी मात्रा में डेटा के निरंतर संचरण के लिए डिज़ाइन किया गया है।

Bluetooth Low Energy में GATT क्या है?

GATT (Generic Attribute Profile) BLE में डेटा आदान-प्रदान प्रोटोकॉल है जो Service → Characteristic → Descriptor पदानुक्रम को परिभाषित करता है। GATT का उपयोग BLE उपकरणों से डेटा पढ़ने, लिखने और सूचनाएं प्राप्त करने के लिए किया जाता है।

Android को BLE के लिए ACCESS_FINE_LOCATION अनुमति की आवश्यकता क्यों है?

Android 12 से पहले, BLE स्कैनिंग का उपयोग स्थान निर्धारित करने के लिए किया जा सकता था, इसलिए Google ने इन अनुमतियों को संयोजित किया। Android 12 से, स्थान से अलग एक अलग BLUETOOTH_SCAN अनुमति पेश की गई है।

BLE डेटा स्थानांतरण गति कैसे बढ़ाएं?

Android पर requestMtu() और iOS पर maximumWriteValueLength के माध्यम से MTU बढ़ाएं। Connection Interval भी गति को प्रभावित करता है — यह जितना छोटा होगा, स्थानांतरण उतना ही तेज़ होगा। इष्टतम संयोजन 10 गुना तक सुधार प्रदान करता है।

BLE में Bonding क्या है?

Bonding BLE उपकरणों के बीच एक स्थायी सुरक्षित कनेक्शन बनाने की प्रक्रिया है। Bonding के बाद, एन्क्रिप्शन कुंजियाँ सहेजी जाती हैं, और उपकरण बार-बार खोज के बिना स्वचालित रूप से कनेक्ट हो जाते हैं।

सारांश

  • Bluetooth Low Energy — न्यूनतम बिजली खपत और 2 Mbps तक की गति के साथ IoT के लिए वायरलेस संचार मानक
  • GATT डेटा को प्रत्येक तत्व के लिए UUID के साथ Service → Characteristic → Descriptor पदानुक्रम में व्यवस्थित करता है
  • Core Bluetooth — iOS पर BLE के लिए Apple का फ्रेमवर्क जिसमें CBCentralManager, CBPeripheral और बैकग्राउंड मोड शामिल हैं
  • BluetoothGatt — BluetoothAdapter, BluetoothLeScanner और स्पष्ट BLUETOOTH_SCAN अनुमतियों के साथ मुख्य Android API
  • iBeacon — CLLocationManager के माध्यम से iOS पर मूल समर्थन के साथ BLE बीकन तकनीक
  • Bonding एन्क्रिप्शन कुंजियों को सहेजने के बाद स्वचालित पुन: कनेक्शन सक्षम करता है
  • मोबाइल एप्लिकेशन में Bluetooth Low Energy के लिए MTU, Connection Interval और प्लेटफ़ॉर्म बैकग्राउंड सीमाओं पर विचार करना आवश्यक है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें