कोर ब्लूटूथ में, किसी डिवाइस से कनेक्ट करने के बाद, मैं डिवाइस बंद कर देता हूं और डिवाइस डिस्कनेक्ट हो जाता है। लेकिन जब मैं डिवाइस को फिर से चालू करता हूं, तो didDiscoverPeripheral
को फिर से बुलाया नहीं जाता है। मैं फिर से डिवाइस से कैसे जुड़ सकता हूं?कोर ब्लूटूथ में डिस्कनेक्ट करने के बाद मैं डिवाइस से कैसे कनेक्ट कर सकता हूं
उत्तर
जब आप cancelPeripheralConnection
didDisconnectPeripheral
के साथ डिवाइस को डिस्कनेक्ट करते हैं तो प्रतिनिधि विधि लागू की जाएगी। हालांकि आईओएस 6.0 से डिवाइस लगभग 40-50 सेकंड (या अधिक) के लिए जुड़ा हुआ है, इसलिए उस समय सीमा में didDiscoverPeripheral
नहीं लगाया जाएगा। यदि आप इसे फिर से "खोजना" चाहते हैं तो बस retrieveConnectedPeripherals
विधि पर कॉल करें और आपको didRetrieveConnectedPeripherals
में संदर्भ प्राप्त होगा।
हालांकि, सबसे अच्छा समाधान डिवाइस के यूयूआईडी को सहेजना और retrievePeripherals
विधि से पुनः कनेक्ट करने के लिए इसका उपयोग करना है। यह didRetrievePeripherals
का आह्वान करेगा और आप connectPeripheral
से पुनः कनेक्ट कर सकते हैं। डिवाइस से पुन: कनेक्ट करने का यह सबसे तेज़ तरीका है, इस मामले में कोई स्कैनिंग की आवश्यकता नहीं है।
जब आप scanForPeripheralsWithServices
के साथ स्कैन करते हैं, तो यह आमतौर पर केवल एक विशेष डिवाइस पते के लिए आपको सूचित करेगा। आप CBCentralManagerScanOptionAllowDuplicatesKey
विकल्प निर्दिष्ट करके डुप्लिकेट की रिपोर्ट करने के लिए इसे बदल सकते हैं। या आप अपने ऐप को पता लगा सकते हैं कि अन्य डिवाइस टाइमआउट का उपयोग करके डिस्कनेक्ट हो गया है, और अपने स्कैन को पुनरारंभ करें।
कोरब्लूटूथ में सभी प्रबंधन अनुप्रयोग परत द्वारा किया जाता है। आपके मामले में, मैं यह करूँगा कि एक ही घटना की तुलना में डिस्कनेक्ट ईवेंट को सुनना, परिधीय को दोबारा कनेक्ट करना है। कनेक्शन विधि एक सस्ती है और यह आपको अपने डिवाइस से फिर से कनेक्ट होने पर आश्वस्त करने का आश्वासन देता है।
ध्यान दें कि यदि आप डिवाइस को स्पष्ट रूप से डिस्कनेक्ट करते हैं, तो आपको एक ही डिस्कनेक्ट ईवेंट प्राप्त होता है, लेकिन आपको रीकनेक्ट विधि को कॉल नहीं करना है।
मैं इसे EAAccessory फ्रेमवर्क के साथ ढूंढ रहा हूं। क्या यह संभव है? यदि ऐसा है तो कोई मुझे "कैसे करें" निर्देशित कर सकता है? अग्रिम में धन्यवाद...:) –