【发布时间】:2013-02-10 08:33:28
【问题描述】:
我编写了一个应用程序,它需要在某个低功耗蓝牙设备进入范围内时获得通知。如果 BLE 设备被注意到,我的应用程序只会存储一个时间戳。
正如 WWDC 2012 Core Bluetooth 视频中所述,在使用 Core Bluetooth 时,应用程序有两种可能在后台模式下运行:
事件背景
事件后台可能是大多数应用程序 将在与低功耗蓝牙设备交互时使用。这 模式不允许与附件直接通信时 该应用程序在后台,但确实提供了来自的通知 附件想要与应用程序通信时。 iOS 将 当您的应用程序在 背景并将继续监视通知。当。。。的时候 连接的 BTLE 配件有可用通知,iOS 会通知 配件想要与您的应用程序对话的用户,允许 用户加载您的应用程序并与附件交互。尽可能多 设备需要节省电力,只提供信息 确定性时间将大大提高电池寿命 配件和 iPhone 4S。
- 此模式不需要 info.plist 条目。
会话后台
有时应用程序必须与之交互 一个附件,即使它在后台运行。考虑一个 运行需要实时监测心率的应用程序。有一个 清除此模型的 START 和 STOP。用户在 应用程序。当跑步处于活动状态时,应用程序会读取心率信息 直到运行完成或停止。会话后台也 允许在应用程序时扫描和连接到 BTLE 配件 在后台。一个 scanForPeripheralsWithServices 或 connectPeripheral 调用将继续,即使应用程序在 背景。 CoreBluetooth 将继续监控特定的 与您的应用正在寻找的服务相匹配的外围设备或外围设备 找到或连接时调用您的应用程序委托。铭记, 每次 BTLE 外设或 iPhone 4S 使用其收音机时, 耗尽各个设备的可用功率。应用开发者 使用基于会话的后台必须注意电源使用情况。
- 会话后台需要在您的 Apps info.plist 中进入 UIBackgroundModes、bluetooth-central 的后台模式。
到目前为止,我的会话背景(使用相应的 info.plist 条目)。该应用程序要求 iOS 检索所有已知设备,然后将连接命令提供给我正在寻找的设备。即使在我的应用程序后台运行几分钟后,连接回调也会出现。
但是:应用程序在 - 比方说 - 一小时后暂停。这意味着下次用户启动我的应用时,它无法判断是否有人目击了感兴趣的 BLE 设备。
所以我的问题是:当某个 BLE 设备进入范围时,我的应用是否可以在没有用户交互的情况下获得通知,即使在发送到后台几天后,我也可以存储我的时间戳?
【问题讨论】:
标签: iphone ios core-bluetooth bluetooth-lowenergy