2012-10-24 6 views
9

में पुन: कनेक्ट करने पर सेवाओं और विशेषताओं की खोज से बचें, मैं एक आईफोन के लिए कोरब्लूटूथ मैनेजर ऐप पर काम कर रहा हूं। पहले से खोजे गए सीबीपीरिफेरल से पुनः कनेक्ट करने में सक्षम होने के लिए, मैं परिधीय (कोरडाटा में) के यूयूआईडी को सहेजता हूं और फिर सीबीसीएन्ट्रल मैनेजर की पुनर्प्राप्ति पेरिफेरल्स को कॉल करता हूं:। मेरी didRetrievePeripherals: कॉलबैक कहा जाता है और मैं कनेक्ट कर सकते हैं, आदि अब तक इतना अच्छा है।CoreBluetooth

चूंकि मैं पहले से ही परिधीय में पुनः कनेक्ट कर रहा हूं, मैं इसकी सेवाओं और विशेषताओं को खोजने से बचना चाहता हूं। इसलिए जब मैं पहली बार कनेक्ट करता हूं तो मैं सेवाओं और विशेषताओं के यूयूआईडी (फिर से कोरडाटा में, परिधीय यूयूआईडी के साथ) को सहेजता हूं।

लेकिन मैं इन UUIDs उपयोग नहीं कर सकते क्योंकि पढ़ने के लिए या CBPeripheral के readValueForCharacteristic विशेषताओं लिखने के लिए: या writeValueForCharacteristic: एक CBCharacteristic एक पैरामीटर के रूप लेते हैं, और वहाँ एक CBCharacteristic उदाहरण के निर्माण के लिए कोई एपीआई है।

क्या पहले ज्ञात परिधीय के साथ पुनः कनेक्ट करते समय सेवाओं और विशेषताओं की खोज से बचने का कोई तरीका है?

+0

हैलो, जैसा कि आप CoreData में ज्ञात डिवाइसों के यूयूआईडी को सहेजते हैं, क्या आप केवल उन डिवाइसों के लिए डेटा संरचना को सहेज नहीं सकते हैं, जिनमें वे सेवाएं और विशेषताओं को लागू करते हैं? –

+1

किसी डिवाइस की सेवाओं और विशेषताओं को यूयूआईडी द्वारा पहचाना जाता है, जिसे मैं सहेजता हूं। लेकिन मैं कोरडाटा में सीबीएस सेवा और सीबीसीएचएक्टेक्टीस्टिक के उदाहरणों को सहेज नहीं सकता क्योंकि वे कम से कम एनएसएमएनेज ऑब्जेक्ट से नहीं व्युत्पन्न हैं - मुझे नहीं पता कि मैं इसे कैसे कर सकता हूं। या मैंने आपके प्रश्न को गलत समझा? – mezulu

+0

ठीक है, मुझे पता है कि आपका प्रश्न समझ गया है। मुझे लगता है कि आपको खोज के साथ करना होगा विशेषताएं: सेवा के लिए: यूयूआईडी का उपयोग ... –

उत्तर

3

मेज़ुलु, आप एक एन्क्रिप्टेड/जोड़ा लिंक का उपयोग करना चाहते हैं - तो आईओएस आपके लिए कैशिंग करेगा। मेरा उत्तर here देखें।

+0

धन्यवाद। मुझे पता नहीं था कि आईओएस 6 ने सेवाओं और विशेषताओं के कैशिंग की शुरुआत की थी। यह वही है जिसे मैं देख रहा था। – mezulu