标签: ble-state-preservation

无法在iOS上触发BLE的状态恢复代码

我试图让我的应用程序响应重新启动到后台是对发现广告外围设备的响应.

以下代码目前在我的应用程序中工作(在前景+背景中,即使经过几个小时的后台运行):

[self.centralManager scanForPeripheralsWithServices:self.services options:nil];
Run Code Online (Sandbox Code Playgroud)

通常,我的应用程序没有任何挂起的连接请求,因为我想在后台扫描新的广告.以下文档让我相信这仍然是可能的:

重要的是要记住,当且仅当特定蓝牙事件或操作(如扫描,连接或订阅的通知特征)等待应用时,才会重新启动和恢复该应用,并且此事件已发生.(来自https://developer.apple.com/library/content/qa/qa1962/_index.html)

系统会跟踪...中央管理器正在扫描的服务(以及扫描开始时指定的任何扫描选项)(来自https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts /CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html)

履行

我通过执行以下操作,按照"添加对状态保存和恢复的支持"部分中的最后一个链接^中概述的步骤进行操作:

  1. 按照指示实例化中央经理:

    self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@ {CBCentralManagerOptionRestoreIdentifierKey:@"myCentralManagerIdentifier"}];

  2. 重新实例化您的中央和外围经理

在这里,我实际上没有做任何其他事情,因为didFinishLaunchingWithOptions被调用并且中心将使用相同的标识符重新初始化.(我在这里还有别的东西要做吗?)

  1. 实现恢复功能:

    (void)centralManager:(CBCentralManager*)central willRestoreState:(NSDictionary*)state {//设置断点但从未到达... NSLog(@"..."); }

我如何测试状态保存/恢复

我在恢复功能中设置了断点(从步骤3开始)并插入了一个断点NSLog.

通过单击"停止",如" 如何触发核心蓝牙状态保存和恢复 "中的建议,我希望我可以通过广告与我的外设广告来触发代码,正如我通常所做的那样(此发现/连接流程在应用程序时工作正常正在后台运行).但是我无法说出真正的事情.

我的一般问题是:为什么不触发断点/ NSLogs不打印?是否有调试恢复功能的首选方法?

最后,作为一个完整性检查,我是否正确地阅读了文档,发现广告外围设备应该触发重新启动应用程序到应用程序处理的后台?

ios bluetooth-lowenergy ble-state-preservation

14
推荐指数
0
解决办法
420
查看次数

如何触发核心蓝牙状态保存和恢复

状态保存和恢复由于状态保存和恢复被内置于核心蓝牙功能,您的应用程序可以选择加入此功能要求系统保留您的应用程序的中枢和外周管理者的状态,并继续执行某些蓝牙相关的任务,他们的代表,即使你的应用程序不再运行.当其中一个任务完成后,系统会将您的应用重新启动到后台,并为您的应用提供恢复其状态和适当处理事件的机会.在上述的家庭安全应用程序的情况下,系统会监控连接请求,并再次重新启动应用程序来处理centralManager:didConnectPeripheral:委托回调当用户回到家中的连接请求完成.

如何触发此操作并测试代码?

我有一个服务配件.我有一个应用程序扫描服务,我选择了状态保存.但是我不确定如何对它进行逻辑测试,因为我不知道触发它需要什么.这些是我尝试失败的选项:

A - kill the app from Xcode

B - kill the app manually

C - power off the phone

D - something else
Run Code Online (Sandbox Code Playgroud)

在所有这些选项中,我试图转到Xcode - >设备并查看日志,但没有看到任何状态恢复日志.

谢谢

xcode bluetooth ios state-restoration ble-state-preservation

7
推荐指数
1
解决办法
3910
查看次数