2016-02-25 15 views
5

मैं अपने ऐप में केंद्रीय मोड में अपने परिधीय डिवाइस के साथ लगातार बीएलई कनेक्शन रखना चाहता हूं और यह विजेट है। तो क्या यह तकनीकी रूप से संभव है?आईओएस कोरब्लूटूथ: ऐप और विजेट में एक ही लक्ष्य परिधीय के साथ सक्रिय कनेक्शन?

कारण निम्न है: जब ऐप में कनेक्शन स्थापित किया गया है, तो हम इसे पृष्ठभूमि में भेजते हैं, फिर आज-विजेट खोलते हैं - विजेट को कनेक्टेड परिधीय डिवाइस के साथ काम करना जारी रखना चाहिए। और बुद्धिमान-विपरीत: अगर हम आज-विजेट को छुपाते हैं, तो लॉन्च ऐप - ऐप को मौजूदा कनेक्शन का उपयोग करना जारी रखना चाहिए।

उत्तर

2

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

अपने मुख्य ऐप में, आपको किसी भी बीएलई ईवेंट को संसाधित करने का मौका मिलेगा, भले ही ऐप पृष्ठभूमि में हो।

ध्यान देने योग्य एक बात यह है कि बीएलई कार्यक्रमों ने कार्रवाई शुरू की है, इसलिए didUpdateValueForCharacteristic जैसे प्रतिनिधि पद्धति के अंदर पृष्ठभूमि में निष्पादित कोड को रखना सुनिश्चित करें।

आपका कोड जिसे आपने निर्दिष्ट किया है उस पर निष्पादित किया जाएगा जब आपने CBCentralManager प्रारंभ किया था।

विजेट और ऐप एक बीएलई कनेक्शन साझा नहीं कर सकता है। आप ऐप और विजेट के बीच संवाद कर सकते हैं जो ऐप्पल सुझाता है (NSUserDefaults या मुख्य मान अवलोकन), या, आप विजेट से एक और बीएलई कनेक्शन बना सकते हैं और इसके माध्यम से संवाद कर सकते हैं।

+0

मार्कस, उत्तर के लिए धन्यवाद। अच्छा दृष्टिकोण, लेकिन मेरा प्रश्न थोड़ा अलग है: क्या हम आज-विजेट में ऐप में स्थापित बीएलई कनेक्शन का उपयोग कर सकते हैं? और इसके विपरीत। पूर्व .: हम ऐप लॉन्च करते हैं, बीएलई कनेक्ट करते हैं, ऐप छुपाते हैं, लॉन्च विजेट करते हैं और वहां कनेक्शन जारी रखते हैं। – brigadir

+1

कृपया अपना उत्तर परिशोधित करें क्योंकि यह वह नहीं है जिसे आपने पूछा था। नहीं, विजेट और ऐप कनेक्शन साझा नहीं कर सकता है। आप ऐप और विजेट के बीच संवाद कर सकते हैं जो ऐप्पल सुझाता है ('NSUserDefaults' या कुंजी मान देख रहा है), या, आप विजेट से एक और बीएलई कनेक्शन बना सकते हैं और इसके माध्यम से संवाद कर सकते हैं। –

+0

मार्कस, स्पष्टीकरण के लिए धन्यवाद और पृष्ठभूमि में बीएलई का उपयोग करने का विचार। मैं इसे आज़माउंगा ... – brigadir

0

हाँ यह संभव है। CBCentralManager पर retrieveConnectedPeripheralsWithServices: पर एक नज़र डालें।

असल में यह तरीका क्या करता है यह पूरे आईओएस डिवाइस से जुड़े सभी परिधीय एकत्र करता है। आईओएस डिवाइस पर अपना दूसरा ऐप लॉन्च करते समय इसका इस्तेमाल करें।

जब कोई ऐप पृष्ठभूमि में होता है, तो इसके बीएलई कनेक्शन जीवित रहते हैं, इसलिए आप ऐप 1, लॉन्च ऐप 2 छुपा सकते हैं, इस विधि का उपयोग परिधीय परिदृश्य की पहचान करने के लिए करें, और इसे पहले ऐप से स्वतंत्र रूप से उपयोग करें ।

+0

तो, दूसरे ऐप में 'पुनर्प्राप्त कनेक्शंसविथ सर्विसेज' को पुनर्प्राप्त करने के बाद मुझे संदर्भ में उल्लिखित पुनर्प्राप्ति परिधीय कनेक्ट करना चाहिए। उस मामले में पहले ऐप में मौजूदा कनेक्शन जिंदा रहता है? यदि हां, डेटा ट्रांसफर दो एक साथ कनेक्शन के साथ कैसे प्रदर्शन करता है? – brigadir

+0

हां, मौजूदा कनेक्शन जिंदा रहता है। मुझे प्रदर्शन पर यकीन नहीं है। –

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