小编STE*_*TEX的帖子

iOS CoreBluetooth:状态保存和恢复

希望在这里得到一些意见.

在我目前的iOS项目中,我使用的是带有swift的CoreBluetooth.该应用程序可以在后台使用CoreBluetooth进行通信,基本上可以正常工作.外围设备需要与iOS设备建立活动连接才能按预期工作.只要连接中断,外围设备就会停止当前操作.当应用程序因内存压力而关闭时,也会发生这种情况.在这种情况下,外围设备不应停止工作,因此存在问题.为了解决这个问题,我按照苹果核心蓝牙编程指南实现了状态保存和恢复后台模式,主要说:

  1. 使用恢复标识符初始化CentralManager.代表=自我.
  2. 实现willRestoreState委托方法.NSLog的东西
  3. 检查特殊键的launchOptions.NSLog的东西.

我强制iOS使用这个常见项目在后台关闭应用程序:BackgroundKill.当然应用程序不再以调试模式运行,这就是为什么我在重要的位置添加一些NSLog语句以在设备控制台中查找.好消息:当应用程序终止时,连接不再被取消,iOS现在按预期运行以保持连接,因此外围设备不会停止工作.罢工!除了应用程序订阅的电池服务之外,在此期间中央和外围设备之间没有通信.建立有效连接的唯一原因是防止外围设备停止工作.

现在手动重新启动应用程序时,没有提到的NSLogs出现.永远不会调用willRestoreState委托,并且launchOptions为nil.我在实例化CentralManager时尝试使用队列"DISPATCH_QUEUE_CONCURRENT"而不是nil.没有效果.

在重新启动应用程序时,我应该如何使用保留的连接?为什么从不调用willRestoreState委托?我在这里错过了什么吗?为了使用状态保存和恢复,是否必须在系统后台/强制关闭时接收数据?

谢谢你的帮助.:)

iphone ios core-bluetooth bluetooth-lowenergy swift

6
推荐指数
1
解决办法
2757
查看次数

标签 统计

bluetooth-lowenergy ×1

core-bluetooth ×1

ios ×1

iphone ×1

swift ×1