将iPhone 6+升级至iOS 10版。 在scanForPeripheralsWithServices上调用服务ID列表没有得到任何回调centralManager:didDiscoverPeripheral:advertisementData:RSSI
在iOS 9上,相同的代码工作正常。
在使用nil(服务ID)调用scanForPeripheralsWithServices时,它在前台工作但是 在后台,扫描在服务ID和没有服务ID的情况下都不起作用。
答案 0 :(得分:2)
我一直试图解决这个问题。刚刚找到答案,看起来你也有,所以在这里张贴只是因为有人偶然发现这个帖子并且错过了你的评论。
iOS 9允许您隐式地将NSUUID
投射到CBUUID
- 这在iOS10中是不允许的。
使用[CBUUID UUIDWithNSUUID:anNSUUID]
初始化扫描时,您可以使用scanForPeripheralsWithServices
方法。
答案 1 :(得分:0)
我在传递一个空数组时运气不错,它根据 CBCentralManagerScanOptionSolicitedServiceUUIDsKey 选项进行了过滤。我还没有测试过背景扫描,但我希望它会起作用。
NSArray *uuids = @[[CBUUID UUIDWithString:@"7905F431-B5CE-4E99-A40F-4B1E122D00D0"]];
[self.cm scanForPeripheralsWithServices:@[]
options:@{CBCentralManagerScanOptionAllowDuplicatesKey:@(YES),
CBCentralManagerScanOptionSolicitedServiceUUIDsKey:uuids}];
我的猜测是这是一个苹果错误,它将在更新中修复。
答案 2 :(得分:0)
在iOS 10.1上,此问题再次发生。
[centralManager scanForPeripheralsWithServices:[NSArray arrayWithObjects:[CBUUID UUIDWithString:AUUID], nil] options:nil];
扫描无法在后台运行。
我的外围设备:
iPhone 6,iOS 10.1
iPad mini 2,iOS 10.0.2
中央设备
iPhone 5S,iOS 9.3.5
这两款外围设备都在后台,iPhone 5S只检测到iPad mini 2。