重启iPhone后启动iOS蓝牙低功耗中心设备应用程序

3
我计划使用CoreBluetooth框架开发一个iOS应用程序,该程序持续监测步数计数器外设并计算步数。
我知道如果将后台执行模式设置为BLE Central,则即使在后台,应用程序也将继续接收BLE事件。
苹果文档指出,如果采用状态保存和恢复,即使应用程序由于低内存而被终止,系统也可以跟踪特定Central Manager的BLE事件。
假设我有一个运行在Central模式下的iOS应用程序。该应用程序订阅了当步数特征改变时从Pedometer接收通知。
我已经在我的应用程序中采用了以下措施:
- BLE Central后台模式 - BLE状态保存/恢复Central Manager 我启动我的应用程序,扫描、配对并连接到步数计数器,应用程序开始接收步数。
我的问题:
1. 现在,如果iPhone重新启动,我是否会继续接收BLE事件,以便在用户无需手动启动应用程序并连接到步数计数器的情况下在后台启动应用程序?
2. 如果用户明确使用多任务手势终止应用程序,应用程序能否在用户无需手动启动应用程序并连接到步数计数器的情况下接收BLE事件?
3. 是否有一种方法可以在iOS启动时启动我的应用程序?
1个回答

3
如果iPhone重新启动,我的应用程序是否会继续接收BLE事件,以便在用户无需手动启动应用程序并连接计步器的情况下在后台启动?
您的应用程序不会接收到BLE事件,因为所有应用程序在重新启动后都处于终止状态(尽管仍在应用程序切换器中)。用户必须在重新启动后至少手动启动您的应用程序一次才能使用BLE。
如果用户明确使用多任务手势终止应用程序,应用程序能否在无需用户手动重新启动应用程序并连接计步器的情况下接收BLE事件?
与上述相同,应用程序已进入终止状态,因此除非显式再次启动,否则无法使用BLE进行通信。
有没有一种方法可以在iOS启动时启动我的应用程序?
iOS不提供任何在启动时启动您的应用程序的方法。
我所能找到的唯一例外是iBeacons。如果您的应用程序注册以接收特定iBeacon的更新,当iOS发现它时,将启动您的应用程序(即使在重新启动或用户明确从切换器中杀死它后)。当您收到iBeacon回调时,您可以启动所有BLE逻辑,然后它将像往常一样在后台运行。当然,这意味着您需要将其作为iBeacon广告放置在您的计步器上,这可能可行也可能不可行。
请记住,在重新启动后,检测iBeacon非常棘手。您无法保证您将多快或是否会收到iBeacon回调来启动您的应用程序。但这是一种方法。 来源

1
这个答案已经过时了。请参考苹果关于此主题的文档:https://developer.apple.com/library/content/qa/qa1962/_index.html - MikeB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接