2015-11-02 17 views
7

से क्लाइंट कॉन्फ़िगरेशन डिस्क्रिप्टर पर संकेतों को कैसे सक्षम करें मैं विशेषता मूल्य परिवर्तन पर ब्लूटूथ डिवाइस से अधिसूचना प्राप्त करने का प्रयास कर रहा हूं। इसके लिए मुझे क्लाइंट विशेषता कॉन्फ़िगरेशन (सीसीसी) डिस्क्रिप्टर के लिए अधिसूचना को सक्षम करने की आवश्यकता है। मैंने विशेषता के लिए setNotifyValue(enabled: Bool, forCharacteristic characteristic: CBCharacteristic) का उपयोग किया है लेकिन मूल्य परिवर्तनों के लिए अद्यतन नहीं प्राप्त किया है।
आईओएस 8

मैं writeValue(data: NSData, forDescriptor descriptor: CBDescriptor) का उपयोग कर सीसीसी के लिए संकेत है, लेकिन इस एपीआई के लिए मेरी ऐप्लिकेशन क्रैश सक्षम करने के लिए करने की कोशिश की और

के रूप में त्रुटि दिखाता है इस पद्धति का उपयोग ग्राहक विशेषता विन्यास वर्णनकर्ता नहीं लिख सकता!

कोई मदद !!

+1

इस समस्या को ठीक है:

एक उदाहरण नीचे जुड़ा हुआ है? मैं भी इस समस्या को पूरा करता हूं। मैं नहीं जानता कि अधिसूचना/संकेत कैसे सक्षम करें। – NTNT

+0

एक ही समस्या। सीसीसी ने एंड्रॉइड सेटिंग पर संकेतों को प्राप्त नहीं करने की समस्या हल की लेकिन आईओएस मुझे ऐसा करने की अनुमति नहीं देता है। एकल सेटNotifyValue काम नहीं करता है क्योंकि यह एंड्रॉइड पर भी इस विशेष विशेषता के लिए काम नहीं करता है। – davis

उत्तर

1

अधिक कोड प्रदान करें उत्तर की सटीकता को कम करने में मदद कर सकता है; हालांकि, मान लीजिए कि आप पहले से ही सभी विशेष मूल्यों को खोजने में सक्षम हैं। आम तौर पर आपको CBPeripheralDelegate कार्यान्वयन में प्रत्येक क्लाइंट विशेषता कॉन्फ़िगरेशन (सीसीसी) डिस्क्रिप्टर के अनुसार सभी विशेषताओं को फिर से सेट करने और सेट/लिखने की आवश्यकता होती है।


- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error 
{ 
    if (error) { 
     NSLog(@"Error discovering characteristics: %@", error); 
     return; 
    } 

    for (CBCharacteristic *characteristic in service.characteristics) { 

     if ([characteristic.UUID isEqual:[CBManager accelDataUUID]]) { 
      [peripheral setNotifyValue:YES forCharacteristic:characteristic]; 
     } else if ([characteristic.UUID isEqual:[CBManager accelConfigUUID]]) { 
      [peripheral writeValue:[CBManager switchData:YES] 
       forCharacteristic:characteristic 
           type:CBCharacteristicWriteWithResponse]; 
     } 
     //... if you have more to iterate 
    } 
} 
+0

मैं पहले से ही इस तरह सदस्यता ले रहा हूं। यह एक को छोड़कर अन्य सभी विशेषताओं के लिए काम करता है। मुझे लगता है कि यह परिधीय के साथ एक मुद्दा हो सकता है। – davis