Ios 当手机处于睡眠模式时,可在后台扫描广告数据

Ios 当手机处于睡眠模式时,可在后台扫描广告数据,ios,objective-c,background,bluetooth-lowenergy,sleep-mode,Ios,Objective C,Background,Bluetooth Lowenergy,Sleep Mode,我正在尝试搜索iPhone是否可以在睡眠模式下扫描BLE设备并读取其广告数据 例如,持续扫描需要多长时间,然后如果设备更改其广告数据,手机将唤醒并发出本地通知。也就是说,应用程序在后台模式下运行x段时间 可能吗?因为在android中是这样。当你的应用程序在后台运行时,对外围设备扫描有限制: 您必须指定您感兴趣的服务uuid;您不能使用nil 不支持重复扫描选项键。这可能是阻止你达到你想要的结果的原因 由于在后台忽略了duplicates键,如果您的应用程序之前已发现外围设备,则其发现将不会

我正在尝试搜索iPhone是否可以在睡眠模式下扫描BLE设备并读取其广告数据

例如,持续扫描需要多长时间,然后如果设备更改其广告数据,手机将唤醒并发出本地通知。也就是说,应用程序在后台模式下运行x段时间


可能吗?因为在android中是这样。

当你的应用程序在后台运行时,对外围设备扫描有限制:

  • 您必须指定您感兴趣的服务uuid;您不能使用
    nil
  • 不支持重复扫描选项键。这可能是阻止你达到你想要的结果的原因
由于在后台忽略了duplicates键,如果您的应用程序之前已发现外围设备,则其发现将不会重新触发
DidDiscoveryPeripal
委派方法,直到您的应用程序重新启动


对于长期发现,您还应该选择状态恢复,但对于在Xcode下运行的简单测试用例来说,这不是必需的。

是必需的,但您需要知道您正在寻找的特定服务。您可以扫描中的所有服务background@Paulw11我试着按下电源按钮,使手机进入睡眠状态,但CBCentralManager随后立即进入关机状态。这是自然的吗?我可以做一个变通方法,使它在睡眠状态下仍然可以扫描吗?您使用的扫描代码是什么?您是否已将蓝牙中央背景模式添加到应用程序中?是的,我在plist必需的背景模式中添加了“应用程序使用核心蓝牙进行通信”。我有一个uuid数组,我将在扫描中使用。
NSArray*uuidArray=[NSArray arrayWithObjects:[CBUUID UUIDWithString:TRANSFER_SERVICE_uuid],nil];[_centralManagerDelegate扫描用于外围设备服务:uuidArray选项:选项]这是我的扫描代码