【发布时间】:2014-12-30 11:40:21
【问题描述】:
我有一个 iOS 应用程序可以扫描 BLE 外围设备,其中可能有很多,并允许用户决定是否连接到设备。连接后,用户还可以决定断开连接。所有这些都可以正常工作。
我还想添加一个选项,允许用户改变主意并重新扫描设备,但这似乎有问题。最明显的方法似乎是停止扫描并重新启动它,如下所示:
[centralManager stopScan];
CBUUID *myServiceUUID = [CBUUID UUIDWithString: SERVICE_MYSERVICE];
NSArray *services = [[NSArray alloc] initWithObjects: myServiceUUID, nil];
[centralManager scanForPeripheralsWithServices: services options: nil];
这不起作用。
最终,iOS 决定告诉我的应用设备再次在做广告,但这需要几分钟时间。
如何说服 iOS 在不等待几分钟的情况下再次告诉我有关外围设备的信息?
【问题讨论】:
-
您是否尝试过关闭您的
centralManager并创建一个新的? -
@IanMacDonald 与这样的经理混在一起通常是个坏主意。 CBCentralManagerScanOptionAllowDuplicatesKey 将在前台工作。或者您可以尝试通过在
dispatch_async调用中嵌入停止和启动来异步重新启动扫描。
标签: ios bluetooth-lowenergy core-bluetooth cbcentralmanager