是否可以让 CoreBluetooth 始终开启和扫描?

Is it possible to have CoreBluetooth Always On and Scanning?

我知道您始终可以通过 CoreLocation 扫描 iBeacon,但是是否可以始终通过 CoreBluetooth 扫描 BLE(非 iPhone 外设)广告数据?总是,我的意思是如果我几天不打开应用程序或关闭我的 phone 并重新打开。

根据我的研究,听起来您可以通过 CoreBluetooth 在后台进行扫描,但是如果 iPhone 发生太多事情或者 iPhone 被关闭,它将关闭等等,但这可以通过 CoreLocation(或通过 Apple MFi 程序)完成。

试试这个

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[manager scanForPeripheralsWithServices:nil options:options];

这使 didDiscoverPeripheral 每 100 毫秒回调一次。这包括它看到的每个设备的 RSSI。

你说得对,你也可以在后台扫描。来自 Apple Documentation:

Apps that have specified the bluetooth-central background mode are allowed to scan while in the background. That said, they must explicitly scan for one or more services by specifying them in the serviceUUIDs parameter.