我们使用core_bluetooth.framework
.Bluetooth设备一个蓝牙devices.We有数据。我们需要获取数据的蓝牙设备我iPhone.We试过这样didDiscoverServices和didDiscoverCharacteristicsForService永远不会调用
-(void) centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
NSLog(@"Discovered peripheral %@ (%@)",peripheral.name,peripheral.identifier.UUIDString);
if (![self.discoveredPeripherals containsObject:peripheral]) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.discoveredPeripherals addObject:peripheral];
[self.tableview insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:self.discoveredPeripherals.count-1 inSection:0]] withRowAnimation:UITableViewRowAnimationLeft];
});
}
[central connectPeripheral:peripheral options:nil];
}
-(void) centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
peripheral.delegate = self;
if(peripheral.services)
[self peripheral:peripheral didDiscoverServices:nil]; //already discovered services, DO NOT re-discover. Just pass along the peripheral.
else
[peripheral discoverServices:nil];
}
-(void) peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {
for(CBService* svc in peripheral.services)
{ NSLog(@" service %@",svc.description);
if(svc.characteristics)
[self peripheral:peripheral didDiscoverCharacteristicsForService:svc error:nil];
else
[peripheral discoverCharacteristics:nil forService:svc];
}
}
-(void) peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
for (CBCharacteristic *characteristic in service.characteristics) {
NSLog(@"Discovered characteristic %@(%@)",characteristic.description,characteristic.UUID.UUIDString);
NSLog(@"Characteris is %@",[characteristic description]);
}
}
我们得到了设备名称和设备UUID号码。但我们的问题是,我们从来没有打电话给didDiscoverServices和didDiscoverCharacteristicsForServices.I想打我的头在我的显示器上,我非常沮丧与这个问题。请指导我们。我的代码有什么问题
在'centralManager:didConnectPeripheral:'中,你的if/else测试中哪行被调用? – Larme
@Larme it call else line [peripheral discoverServices:nil];永远的时间 –
实现每个委托功能,并尝试查看其余的其中一个是否被调用。 – Aris