Я работаю над сканированием BLE в фоновом режиме.Bluetooth LE Устройство сканирования в фоновом режиме от iOS
Проблема не работает в фоновом режиме. Он работает очень хорошо в режиме Foreground.
Ниже приведено несколько строк кода.
dispatch_queue_t centralQueue = dispatch_queue_create("com.XXXXX.BLEback", DISPATCH_QUEUE_SERIAL);// or however you want to create your dispatch_queue_t
manager = [[CBCentralManager alloc] initWithDelegate:self queue:centralQueue options:nil];
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
if (central.state == CBCentralManagerStatePoweredOn) {
[self startScan];
}
if (![self supportLEHardware])
{
@throw ([NSError errorWithDomain:@"Bluetooth LE not supported"
code:999
userInfo:nil]);
}
}
- (void)startScan
{
NSDictionary * options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:false] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
[manager scanForPeripheralsWithServices:nil options:options];
}
здесь я передаю ноль в качестве услуг.
Я принимаю в разделе «Устройства» в Xcode. Но не в приложении.
Notice>: (Error) Discovered unknown type for scan: {
kCBAdvDataChannel = 37;
kCBAdvDataIsConnectable = 1;
kCBAdvDataManufacturerData = <00003962 6708f4c1 00000000 00d02b00 20d03300 20d03300 20>;
kCBAdvDataWSaturated = 0;
kCBAdvDataWlanRSSI = 0;
}, -51, puck type: 57
Пожалуйста, покажите больше коды - в частности, ваш 'centralManagerDidUpdateState' метода делегата и где вы выполняете' scanForPeripheralsWithServices' в отношении получения механизированного о состоянии в этом методе делегата – Paulw11
@ Paulw11 Обновленного вопрос с строками коды. –
Вы пробовали приложение LightBlue из магазина приложений, чтобы узнать, доступно ли ваше периферийное устройство? – Paulw11