我已经使用CoreBluetooth框架扫描所有服务,并在我第一次启动我的应用程序时获得它运行良好的外围设备,但是如果我弹出到上一课并再次从该课程中来,我的CBCentralManger的委托方法没有得到触发了
但是第二次调用下面的方法
-(void)centralManagerDidUpdateState:(CBCentralManager *)central {
if (central.state != CBCentralManagerStatePoweredOn) {
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"BLE not supported !" message:[NSString stringWithFormat:@"CoreBluetooth return state: %ld",central.state] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
else {
[central scanForPeripheralsWithServices:nil options:nil];
}
}
但在此之后它没有被触发其余的委托方法
-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
}
-(void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
}
- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
{
}
任何人都可以告诉我不调用这些委托方法的可能性是什么?
答案 0 :(得分:0)
您不需要使用那个凌乱的框架(Core Bluetooth), 有一个很好的解决方案 - LGBluetooth 它适用于CoreBluetooth并提供基于现代块的api。
https://github.com/DavidSahakyan/LGBluetooth
它非常易于使用
[[LGCentralManager sharedInstance] scanForPeripheralsByInterval:15 completion:^(NSArray *peripherals) { }];
这是一个扫描外围设备的例子