我计划使用 CoreBluetooth 框架开发一个 iOS 应用程序,该应用程序可以连续监控计步器外围设备并计算脚步数。
我知道,如果后台执行模式设置为 BLE Central,应用程序即使在后台也将继续接收 BLE 事件。
Apple 文档指出,如果应用程序因内存不足而终止,如果采用状态保存和恢复,系统可以跟踪特定中央管理器的 BLE 事件。
假设我有一个在中央模式下运行的 iOS 应用程序。该应用程序已订阅,以便在脚步特征发生变化时接收来自计步器的通知。
我在我的应用程序中采用了以下内容。
- BLE中央后台模式
- 中央管理器的 BLE 状态保存/恢复
我启动我的应用程序,扫描、配对并连接到计步器,应用程序开始接收脚步声。
我的问题:
现在,如果 iPhone 重新启动,我是否会继续接收 BLE 事件,以便我的应用程序将在后台启动,而无需用户再次手动启动应用程序并连接到计步器?
如果用户使用多任务手势明确终止应用程序,应用程序是否能够接收 BLE 事件,而无需用户再次手动启动应用程序并连接到计步器?
有没有办法在 iOS 启动时启动我的应用程序?
- 现在,如果 iPhone 重新启动,我是否会继续接收 BLE 事件,以便我的应用程序将在后台启动,而无需用户再次手动启动应用程序并连接到计步器?
您的应用程序不会接收 BLE 事件,因为所有应用程序在重新启动后都会以终止状态启动(尽管仍保留在应用程序切换器中)。用户必须在重新启动后至少手动启动您的应用程序一次才能使用 BLE。
- 如果用户使用多任务手势明确终止应用程序,应用程序是否能够接收 BLE 事件,而无需用户再次手动启动应用程序并连接到计步器?
与上面相同,应用程序已进入终止状态,因此在再次显式启动之前,它将无法使用 BLE 进行通信。
- 有没有办法在 iOS 启动时启动我的应用程序?
iOS 不提供任何在启动时启动应用程序的方法。
我能找到的唯一一个例外是 iBeacons。如果您的应用程序注册接收特定 iBeacon 的更新,iOS 将在找到它时启动您的应用程序(即使在重新启动后或用户明确从切换器中终止它)。当您收到 iBeacon 回调时,您可以启动所有 BLE 逻辑,然后它将照常在后台运行。当然,这意味着您需要在计步器上宣传 iBeacon,这可能可行,也可能不可行。
请记住,iBeacon 的检测非常挑剔,尤其是在重新启动后。您无法保证以多快的速度或者是否会收到 iBeacon 回调来启动您的应用程序。但这是一些东西。
Source https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)