2015-01-27 11 views
10

में प्रतिनिधि तरीकों फोन नहीं किया मैं iOS8 में CoreBluetooth.framework का उपयोग आंकड़ा अंतरण हासिल करना चाहते हैं, मैं विधि का पालन में परिधीय की खोज और परिधीय कनेक्ट का प्रयास किया।क्यों coreBluetooth connectPeripheral का उपयोग iOS8

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI 
{ 
    NSLog(@"Discover name : %@", peripheral.name); 
    [self.centralManager connectPeripheral:peripheral options:nil]; 
} 

लेकिन यह प्रतिनिधि तरीकों didFailToConnectPeripheral या didConnectPeripheral फोन नहीं किया, मैं Waner क्या यह गलत है, है कोड त्रुटि या iOS8 कुछ अतिरिक्त चीज़ों की ज़रूरत? इसे कैसे सौदा करें, अग्रिम धन्यवाद!

यहां मेरा कोड github है, मैं एक प्रोग्राम लिखने के लिए एक सर्वर लिखता हूं और दूसरा केंद्रीय होता है।

+11

क्या यू एक इवर में परिधीय वस्तु भंडारण और फिर इसे करने के लिए कनेक्ट करने की कोशिश की? यानी 'self.discoveredPeripheral = परिधीय; [self.centralManager connectPeripheral: self.discoveredPeripheral विकल्प: nil]; ' –

+1

[आईओएस कोरब्लूटूथ: केंद्रीय प्रबंधक: संभवतः कनेक्टेड पेरिफेरल/डीफेलटोकनेक्ट पेरिफेरल: कॉल नहीं किया जा रहा है] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/26377470/ios-corebluetooth- centralmanagerdidconnectperipheral-didfailtoconnectperiph) – Paulw11

+0

यह काम करता है, बहुत बहुत धन्यवाद! – Clavis

उत्तर

3

मैं TemperatureSensor iOS sample app का उपयोग कर रहा हूं जो डिस्क्वायर पेरिफेरल को नहीं बुलाया गया था। Heart Rate Monitor Mac sample app के प्रवाह के संदर्भ में। कृपया सुनिश्चित करें कि कोड की रन अनुक्रम है:

1. centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()]; 
2. - (void) centralManagerDidUpdateState:(CBCentralManager *)central 
3. [centralManager scanForPeripheralsWithServices:... 

- (void) centralManager:(CBCentralManager *)central didDiscoverPeripheral:... बाद में बुलाया जाएगा।

9

@Sj टिप्पणी मेरे लिए इसे हल, एक जवाब के मामले में किसी को यह याद करेंगे में कॉपी:

यू एक इवर में परिधीय वस्तु भंडारण और फिर इसे करने के लिए कनेक्ट करने की कोशिश की थी? यानी self.discoveredPeripheral = परिधीय; [self.central प्रबंधक कनेक्ट पेरिफेरल: self.discoveredPeripheral विकल्प: शून्य];

0

केवल एक बार कनेक्ट विधि को कॉल करें और कनेक्शन प्रतिनिधि प्रतिक्रिया की प्रतीक्षा करें। इसके बाद के संस्करण कोड है जो आप पोस्ट कनेक्ट विधि अधिक बार फोन करेगा (जब कभी यह परिधीय की खोज)

if(!self.detectedBLE){ [self.centralManager stopScan]; self.detectedBLE = peripheral; [self.centralManager connectPeripheral:self.detectedBLE options:nil]; }

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