iphone - CoreBluetooth 后台扫描设备

标签 iphone objective-c ios core-bluetooth bluetooth-lowenergy

我目前正在开发一款应用,该应用要求我使用蓝牙 4.0 扫描设备。在这一点上我遇到了一个问题。

当应用程序在后台运行时,是否可以让应用程序扫描设备?由于某种原因,应用程序无法扫描设备。该应用程序在后台运行时未调用 didDiscoverPeripheral。但是,一旦建立连接,我的应用程序就可以从设备接收数据。

为了让事情更简单,为什么我的应用在后台运行时无法扫描设备?

附言我确实输入了所需的背景模式 1.App使用CoreBluetooth进行通信 2.App使用CoreBluetooth共享数据

最佳答案

后台扫描是一个非常缓慢的过程。 Apple 表示它比前台慢 55 倍。我的经验表明它可能会更慢。因此,为了在后台扫描设备,请记住以下几点:

  1. 确保另一台设备以最大速度(20 毫秒)进行广播,并广播您正在扫描的服务。此答案中有一个示例:https://stackoverflow.com/a/18113505/768935
  2. 由于扫描速度降低,请为应用留出更多时间来查找设备。
  3. 确保您使用指定的服务开始扫描。您无法在后台扫描 nil 服务。
  4. 用于扫描的允许重复选项在后台被忽略。

关于iphone - CoreBluetooth 后台扫描设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13873168/

相关文章:

ios - Swift 2 - 使用从 A 到 Z 的键将数组分成字典

iphone - UINavigationBar rightBarButtonItem 没有动画

ios - 如果您不发布到 App Store,则在后台运行 iOS 应用程序

iphone - 如何在 xib 文件中使用 "First Responder"?

objective-c - 如何将具有十六进制值的 NSString 转换为二进制 char*?

objective-c - Objective-C "Bad URL"错误

iphone - ios - 以编程方式调整自定义 View 的大小

ios - 如何在运行时确定只读属性是否弱?

objective-c - 同一类中具有相同方法名称的两个类别

ios - 为什么 scrollview 仍然滚动,即使它没有 contentView 可以滚动到