मैंने अभी आईओएस के लिए कोर ब्लूटूथ फ्रेमवर्क के साथ शुरुआत की है और मैं एक ऐप विकसित कर रहा हूं जिसे लगातार बीएलई उपकरणों के लिए स्कैन करने की आवश्यकता है ताकि मैं हर मिनट अपने आरएसएसआई नंबर को पुनः प्राप्त कर सकूं या इसलिए।कोर ब्लूटूथ - इन-रेंज उपकरणों के निरंतर आरएसएसआई अपडेट
वर्तमान में मेरे पास है:
manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[manager scanForPeripheralsWithServices:nil options:options];
इस BLE उपकरणों के लिए मेरे एप्लिकेशन स्कैनिंग शुरू होता है और इस प्रतिनिधि विधि है जब कोई उपकरण की खोज की है कॉल:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
NSLog(@"Did discover peripheral. peripheral: %@ rssi: %@, UUID: %@ advertisementData: %@ ", peripheral, RSSI, peripheral.UUID, advertisementData);
//Do something when a peripheral is discovered.
rssiLabel.text = [RSSI stringValue];
[manager retrievePeripherals:[NSArray arrayWithObject:(id)peripheral.UUID]];}
इस विधि मुझे परिधीय के RSSI नंबर प्राप्त करता है जो मैं प्रदर्शित कर सकता हूँ
- (void) centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals {
NSLog(@"Currently known peripherals :");
int i = 0;
for(CBPeripheral *peripheral in peripherals) {
NSLog(@"[%d] - peripheral : %@ with UUID : %@",i,peripheral,peripheral.UUID);
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[manager scanForPeripheralsWithServices:nil options:options];
}
इस कोड को काम करने और एक स्कैन मोटे तौर पर हर 1 मिनट कर किया जा रहा है, लेकिन मैं वास्तव में नहीं जानता कि क्यों यह काम कर रहा ...
प्रलेखन: अंतिम पंक्ति तो यह प्रतिनिधि प्रणाली को बुलाती है कोर ब्लूटूथ पर बहुत स्पैस है इसलिए अगर किसी को यह कैसे करना है, इस बारे में कोई विचार है, या जो करने की कोशिश कर रहा हूं, उसे करने का बेहतर तरीका है, तो मैं मदद की सराहना करता हूं!
काम करने ... RSSI कितनी बार अद्यतन किया जाता है लगता है? संपादित करें: एक बार एक मिनट?मुझे लगता है कि जब आप कनेक्ट नहीं होते हैं तो एक समय बाहर होता है, ताकि यह स्कैन फिर से शुरू हो जाए। – chwi
मैंने अभी खुद को प्रलेखन पढ़ना शुरू कर दिया है, इसलिए आप I से आगे हैं। प्रश्न, आप स्कैनफोरफेरफेल्स को क्यों कॉल कर रहे हैं प्रतिनिधि पद्धति में रीट्रीव पेरिफेरल्स? CBCentralManager आवंटित होने के बाद आप इसे पहले ही कॉल करते हैं। यह आपके द्वारा वर्णित दोहराव वाले स्कैन का कारण बन सकता है। – mkr707
सिर्फ मेरे दो सेंट> = 7.0 के लिए: पुनर्प्राप्ति PeripheralsWithIdentifiers अब से उपयोग करने की आवश्यकता है। –