返回查看控制器时,核心蓝牙无法恢复

时间:2016-09-07 12:42:10

标签: ios objective-c bluetooth

我正在使用蓝牙心率监测器,我按照https://www.raywenderlich.com/52080/introduction-core-bluetooth-building-heart-rate-monitor

的代码进行操作

我现在让应用程序运行良好。在这个相同的应用程序中,我有几个其他视图控制器,做一些其他的事情,如登录页面和简单的"关于我们"页。我遇到的问题是,当回到包含实际心率监视器的视图控制器时,监视器位于0并且不会更新值。

我将恢复代码和代理:

-(void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary *)state {

  NSLog(@"willRestoreState called");
    self.polarH7HRMPeripheral = [state[CBCentralManagerRestoredStatePeripheralsKey] firstItem];
    self.polarH7HRMPeripheral.delegate = self;  
  }

中央经理被宣布如下:

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

当回到视图控制器时,我注意到没有调用willRestoreState

我迷失了下一步的目光。任何人都可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果CBCentralManager的对象被解除分配,则此方法将无效,因为这是CBCentralManager的委托方法。

要使其正常工作,您必须重新初始化CBCentralManager的对象,以便获得心率。

喜欢这个

self.hrCBManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];