2013-08-19 7 views
5

मैं आईओएस ब्लूटूथ, इस तरह कोड का उपयोग करते हैं:आईओएस ब्लूटूथ scanForPeripheralsWithServices कोई परिणाम नहीं

static NSString * const kServiceUUID = @"1802"; 
[self.manager scanForPeripheralsWithServices:@[ [CBUUID UUIDWithString:kServiceUUID] ] options:@{CBCentralManagerScanOptionAllowDuplicatesKey : @NO }]; 

क्यों कोई जवाब नहीं? मैं विधि में पैरामीटर जोड़े के प्रकार की कोशिश की है scanForPeripheralsWithServices मैं इस सवाल जाँच कर ली है: How to get list of available Bluetooth devices?

मेरा डिवाइस आइपॉड टच 5 (jailbroken) आईओएस 6 के साथ मैं पहले से ही कुछ ब्लूटूथ 4.0 उपकरणों का परीक्षण किया है। क्या कोई मुझे बता सकता है क्यों?

+0

और हाँ के विकल्प के साथ? – Larme

+0

@Larme भी काम नहीं करते हैं। मैं समझ नहीं पा रहा हूं कि इस कुंजी का क्या अर्थ है। –

उत्तर

7

nil सेवाओं के साथ स्कैन करें यह जांचने के लिए कि क्या परिधीय आप वास्तव में कुछ भी विज्ञापन कर रहे हैं या नहीं। जब centralManager:didDiscoverPeripheral:advertisementData:RSSI: कहा जाता है, तो विज्ञापन डेटा देखें। बस NSLog() इसे। यदि 0x1802 इसमें नहीं है, तो परिधीय इस सेवा का विज्ञापन नहीं कर रहा है और स्कैनर इसे इस तरह से नहीं ढूंढ पाएगा। इसे ठीक करने के लिए, विज्ञापन सेटअप में सेवा शामिल करें:

NSDictionary *advData = 
@{CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:@"1802"]]}; 
[peripheralManager startAdvertising:advData]; 
+3

अभी भी मेरे लिए काम नहीं किया है। लेकिन मैंने इसे समझ लिया। राज्य को CBCentralManagerStatePoweredOn में बदलने से पहले मैंने स्कैन शुरू किया। – david72

+0

डिबगिंग का अच्छा तरीका सभी परिधीय देखने के लिए serviceUUID के लिए एक खाली सरणी सेट करना है। –

1

क्या आपने विज्ञापन आईओएस डिवाइस पर लॉग इन किया है कि यह वास्तव में तत्काल चेतावनी सेवा (1802) का विज्ञापन कर रहा है ?? आप इसे CBPeripheralManagerDelegate peripheralManagerDidStartAdvertising: कॉलबैक के अंदर प्रिंट कर सकते हैं। आप फोरग्राउंड में दोनों ऐप्स के साथ सिर्फ शून्य के लिए स्कैन कर सकते हैं और सत्यापित करने के लिए विज्ञापन डेटा के अंदर देख सकते हैं। इसी तरह, यदि यह एक समर्पित ब्ली परिधीय है, तो अपने केंद्रीय प्रबंधक को अग्रभूमि में चलाने वाले डिवाइस के साथ ऐसा ही करें। यदि आप अभी भी परिधीय नहीं देख सकते हैं (और आपके पास इस परिधीय के लिए फर्मवेयर तक पहुंच नहीं है), तो शायद सभी डेटा पैकेट को पारित करने के लिए टीआई पैकेट स्निफर खरीदें।

+0

मैंने कभी-कभी ब्लूटूथ ली डिवाइसों को देखा है (आमतौर पर जिन्हें मैंने गलत कॉन्फ़िगर किया है और डिवाइस पर विज्ञापन करते समय किसी विशेष सेवा का विज्ञापन करना भूल गए हैं) किसी विशेष सेवा के लिए स्कैन पर मिस जाए। यदि आप सेवा को निशाना बनाते हैं और स्कैन चलाते हैं, तो आप यह सत्यापित करने के लिए वापस आने वाले सभी डिवाइस देख सकते हैं कि डिवाइस को विज्ञापन के रूप में भी उठाया जा रहा है, फिर यह देखने के लिए कि यह कौन सी सेवाएं विज्ञापित करती है। –

1

आपको हजार बार धन्यवाद, लेकिन मुझे खेद है। फिर मैंने अपने कोड का परीक्षण एक और ब्लूटूथ 4.0 ली डिवाइस के साथ किया। यह काम करता हैं! इसका मतलब है कि मेरे पूर्व ब्लूटूथ 4.0 डिवाइस LE संस्करण नहीं हैं। उन्होंने मुझे गलत बात बताई! धन्यवाद और अपना समय बर्बाद करने के लिए खेद है।

+1

आपके लिए अच्छा है। हमारे लिए बुरा, जिन्होंने उत्तर प्रदान किया। मुझे लगता है कि आपसे वोट करने के लिए यह उचित होगा। याद रखें, इससे आपको कोई कीमत नहीं लगती है और वास्तव में, प्रस्तावित समाधान इस प्रश्न के भविष्य के आगंतुकों की सहायता कर सकते हैं। – allprog

+0

@ सेमेगोल आप किस प्रकार का ब्लूटूथ 4.0 ली डिवाइस इस्तेमाल करते थे, मैंने सर्गो बीटी 8000 ली डिवाइस के साथ प्रयास किया, लेकिन यह पता नहीं लगा रहा है। कृपया ब्लूटूथ डोंगल नाम का जिक्र करें जिसका हम आईओएस के लिए उपयोग कर सकते हैं। अग्रिम में धन्यवाद! –

संबंधित मुद्दे