【发布时间】:2016-09-13 12:47:25
【问题描述】:
我正在实现核心蓝牙后台模式,并已成功使用willRestoreState 方法。系统正确处理扫描和唤醒我的应用程序的服务广告和传入数据。但是,如果在应用程序终止时设备已经连接(由于内存管理),我似乎无法重新建立外围设备的功能所有权。没有调用委托方法。这是我的willRestoreState 方法:
-(void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary<NSString *,id> *)state {
NSArray *peripherals = state[CBCentralManagerRestoredStatePeripheralsKey];
NSString* NFCName = @"ACR1255U-J1-001236";
_centralManager = central;
_centralManager.delegate = self;
for(CBPeripheral* peripheral in peripherals) {
if([peripheral.name isEqualToString:NFCName]) {
NSLog(@"Restoring NFC Connection");
_peripheral = peripheral;
_peripheral.delegate = self;
[_centralManager connectPeripheral:_peripheral options:nil];
return;
}
}
[_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:@"FFF0"]] options:nil];
}
Apple docs 声明应用程序必须在本地连接到设备,但无论是否调用 -connectPeripheral,_peripheral.state 都会读取已连接。 -centralManager:didConnectPeripheral 和 -centralManager:didFailToConnectPeripheral: 都没有被调用。同样[_peripheral readRSSI] 不会导致调用-peripheral:didReadRSSI 委托方法。
我似乎找不到此功能的完整示例代码。如果有人有任何我可以解析以帮助解决问题的方法,我也将不胜感激。
谢谢你,所以
【问题讨论】:
-
嗨 NewEndian,您找到解决此问题的方法了吗?我有同样的问题。谢谢。
-
嗨,@newedian 如果您有任何解决方案,请告诉我。我也面临同样的问题。谢谢。
标签: ios bluetooth background cbcentralmanager cbperipheral