【问题标题】:State Reservation and Restoration iOS for ScanForPeripheral用于 ScanForPeripheral 的状态保留和恢复 iOS
【发布时间】:2017-05-24 01:32:51
【问题描述】:
  1. 国家保留和恢复可以scanForPeripherals(withServices: nil, options: [CBCentralManagerScanOptionAllowDuplicatesKey : true] 吗?

  2. 我的目标是从后台扫描、连接和写入外围设备。 到目前为止,我知道后台扫描需要特定的服务 UUID。 是否有另一种方法可以在不定义服务 UUID 的情况下在后台进行扫描等?

我正在使用 iBeacon 和 swift 3

【问题讨论】:

  • 不清楚您要达到的目标是什么?如果您不知道它将宣传什么服务,您如何连接到外围设备并对其进行写入?
  • 我正在尝试扫描/发现外围设备而不定义服务 uuid。我只是确保后台任务的行为与前台不同。在前台我们可以连接到外围设备,即使我们不知道它的服务 uuid 但在后台不知道。对吗?
  • 正确。在前台,您可以使用nil 发现所有外围设备。
  • 好的。谢谢保罗

标签: ios swift3 bluetooth-lowenergy ibeacon


【解决方案1】:

很遗憾,不,如果您不提供服务 UUID,CoreBluetooth 根本不会提供回调,除非您的应用在前台。

【讨论】:

  • 好的。那么,如果我没有服务 UUID,我可以使用 kCBAdvDataLocalName 在后台进行扫描吗?
  • 不,您不能按名称扫描。您需要知道要扫描的特定服务 UUID 才能在后台进行扫描。事实上,正是 iOS 发现了一个外设广告您正在扫描的服务 UUID,这将导致您的应用重新启动以进行状态恢复。
  • ios和android有不同的后台扫描方式吗? Android 是否需要知道服务 UUID 才能执行后台任务?我正在为 android 使用 altbeacon 插件
  • Android 非常不同。在后台扫描时它不需要知道服务 uuid,尽管如果你将它提供给 ScanFilter 它将有助于节省电池电量。在这种情况下,Android 信标库会自动将 Eddystone 服务 UUID 提供给 ScanFilter。
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多