4

将 iPhone 6+ 升级到 iOS 10 版本。在调用 scanForPeripheralsWithServices 时,服务 ID 列表未收到任何回调 centralManager:didDiscoverPeripheral:advertisementData:RSSI

在 iOS 9 上,相同的代码运行良好。

在调用具有 nil(服务 ID)的 scanForPeripheralsWithServices 时,它在前台工作,但在后台,扫描在有服务 Id 和没有服务 Id 的情况下都不起作用。

4

3 回答 3

2

几天来,我一直试图弄清楚这一点。刚刚找到答案,看起来你也有,所以把它贴在这里,以防有人偶然发现这个帖子并错过你的评论。

iOS 9 允许您将您的隐式NSUUID转换为 a CBUUID- 这在 iOS10 中显然是不允许的。

您可以在使用[CBUUID UUIDWithNSUUID:anNSUUID]初始化扫描时使用该方法scanForPeripheralsWithServices

于 2016-09-29T22:17:39.920 回答
0

我很幸运地传递了一个空数组,它确实根据CBCentralManagerScanOptionSolicitedServiceUUIDsKey选项进行了过滤。我还没有测试过后台扫描,但我希望它会起作用。

NSArray *uuids = @[[CBUUID UUIDWithString:@"7905F431-B5CE-4E99-A40F-4B1E122D00D0"]];
[self.cm scanForPeripheralsWithServices:@[]
                                options:@{CBCentralManagerScanOptionAllowDuplicatesKey:@(YES),
                                    CBCentralManagerScanOptionSolicitedServiceUUIDsKey:uuids}];

我的猜测是这是一个苹果错误,它将在更新中修复。

于 2016-09-22T19:11:01.993 回答
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。

于 2016-10-26T07:14:52.060 回答