我有一个iOS应用程序,可以扫描BLE外围设备,其中可能有很多,并允许用户决定是否连接到设备。连接后,用户还可以决定断开连接。所有这一切都很好。
我还想添加一个选项,允许用户改变主意并重新扫描设备,但这似乎有问题。最明显的方法是停止扫描并重新启动它,如:
[centralManager stopScan];
CBUUID *myServiceUUID = [CBUUID UUIDWithString: SERVICE_MYSERVICE];
NSArray *services = [[NSArray alloc] initWithObjects: myServiceUUID, nil];
[centralManager scanForPeripheralsWithServices: services options: nil];
这不起作用。
最终,iOS决定告诉我的应用该设备再次投放广告,但这需要几分钟。
我怎样才能说服iOS第二次告诉我有关外围设备而无需等待几分钟?
答案 0 :(得分:0)
您可以在初始化CBCentralManagerScanOptionAllowDuplicatesKey
时启用CBCentralManager
选项。当您的应用位于前台时,您将获得不断的回调,但是,您需要记住,当应用在后台时,CBCentralManagerScanOptionAllowDuplicatesKey
处于禁用状态。此外,扫描间隔被限制到其前景对应物的~60。