2012-11-08 27 views
5

कोर ब्लूटूथ में, किसी डिवाइस से कनेक्ट करने के बाद, मैं डिवाइस बंद कर देता हूं और डिवाइस डिस्कनेक्ट हो जाता है। लेकिन जब मैं डिवाइस को फिर से चालू करता हूं, तो didDiscoverPeripheral को फिर से बुलाया नहीं जाता है। मैं फिर से डिवाइस से कैसे जुड़ सकता हूं?कोर ब्लूटूथ में डिस्कनेक्ट करने के बाद मैं डिवाइस से कैसे कनेक्ट कर सकता हूं

उत्तर

12

जब आप cancelPeripheralConnectiondidDisconnectPeripheral के साथ डिवाइस को डिस्कनेक्ट करते हैं तो प्रतिनिधि विधि लागू की जाएगी। हालांकि आईओएस 6.0 से डिवाइस लगभग 40-50 सेकंड (या अधिक) के लिए जुड़ा हुआ है, इसलिए उस समय सीमा में didDiscoverPeripheral नहीं लगाया जाएगा। यदि आप इसे फिर से "खोजना" चाहते हैं तो बस retrieveConnectedPeripherals विधि पर कॉल करें और आपको didRetrieveConnectedPeripherals में संदर्भ प्राप्त होगा।

हालांकि, सबसे अच्छा समाधान डिवाइस के यूयूआईडी को सहेजना और retrievePeripherals विधि से पुनः कनेक्ट करने के लिए इसका उपयोग करना है। यह didRetrievePeripherals का आह्वान करेगा और आप connectPeripheral से पुनः कनेक्ट कर सकते हैं। डिवाइस से पुन: कनेक्ट करने का यह सबसे तेज़ तरीका है, इस मामले में कोई स्कैनिंग की आवश्यकता नहीं है।

+0

मैं इसे EAAccessory फ्रेमवर्क के साथ ढूंढ रहा हूं। क्या यह संभव है? यदि ऐसा है तो कोई मुझे "कैसे करें" निर्देशित कर सकता है? अग्रिम में धन्यवाद...:) –

2

जब आप scanForPeripheralsWithServices के साथ स्कैन करते हैं, तो यह आमतौर पर केवल एक विशेष डिवाइस पते के लिए आपको सूचित करेगा। आप CBCentralManagerScanOptionAllowDuplicatesKey विकल्प निर्दिष्ट करके डुप्लिकेट की रिपोर्ट करने के लिए इसे बदल सकते हैं। या आप अपने ऐप को पता लगा सकते हैं कि अन्य डिवाइस टाइमआउट का उपयोग करके डिस्कनेक्ट हो गया है, और अपने स्कैन को पुनरारंभ करें।

2

कोरब्लूटूथ में सभी प्रबंधन अनुप्रयोग परत द्वारा किया जाता है। आपके मामले में, मैं यह करूँगा कि एक ही घटना की तुलना में डिस्कनेक्ट ईवेंट को सुनना, परिधीय को दोबारा कनेक्ट करना है। कनेक्शन विधि एक सस्ती है और यह आपको अपने डिवाइस से फिर से कनेक्ट होने पर आश्वस्त करने का आश्वासन देता है।

ध्यान दें कि यदि आप डिवाइस को स्पष्ट रूप से डिस्कनेक्ट करते हैं, तो आपको एक ही डिस्कनेक्ट ईवेंट प्राप्त होता है, लेकिन आपको रीकनेक्ट विधि को कॉल नहीं करना है।