无法在iOS

时间:2018-05-30 10:22:20

标签: ios bluetooth-lowenergy ble-state-preservation

我正在努力让我的应用程序响应重新启动后台是对发现广告外围设备的回应。

以下代码目前适用于我的应用程序(在前景+背景中,即使经过数小时的后台处理后):

[self.centralManager scanForPeripheralsWithServices:self.services options:nil];

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

  

重要的是要记住,当且仅当特定蓝牙事件或操作(如扫描,连接或订阅的通知特征)等待应用时,应用才会重新启动和恢复事件已经发生。(来自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. 重新实例化您的中央和外围经理

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

    1. 实施恢复功能:

      (void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary *)state {   //断点在这里设置但从未到达......   的NSLog(@ “......”); }

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

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

      按照How to trigger Core Bluetooth state preservation and restoration中的建议单击“停止”,我希望我可以通过我的外设广告来触发代码(正如我通常做的那样)(当应用程序出现时,此发现/连接流程正常运行在后台运行)。但是我无法说出真正的事情。

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

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

0 个答案:

没有答案