在另一个应用程序连接到它之前找不到蓝牙外围设

时间:2016-11-20 23:56:12

标签: ios bluetooth btle

我有一个可以连接蓝牙LE心率监测器的健身应用程序。在过去的几年里,我没有遇到任何问题。现在我正在为iOS 10更新它,并且发生了一些奇怪的事情。如果我扫描这样的外围设备......

- (id)init {
    self.heartRateService = @"180D";
    self.heartRateKey = @"2A37";
    self.allServices = [NSArray arrayWithObjects:[CBUUID UUIDWithString:self.heartRateService], nil];
    self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
}

- (void)startScanning {
    if (self.centralManager.state == CBCentralManagerStatePoweredOn) {
        [self.centralManager scanForPeripheralsWithServices:self.allServices options:nil];
    }
}

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
    DLog(@"found peripheral: %@", peripheral);
    DLog(@"advertisementData: %@", advertisementData);
    DLog(@"RSSI: %@", RSSI);
}

...无法找到心率监测器 - 扫描开始但永远不会调用didDiscoverPeripheral。如果我尝试竞争对手的应用程序#1,它会从HRM中找到并显示数据,但如果我退出并返回我的应用程序,我的应用程序仍无法找到HRM。如果我尝试竞争对手的应用程序#2,它会从HRM中找到并显示数据,如果我退出并返回到我的应用程序,那么我的应用程序会立即连接并按预期工作。看起来竞争对手的应用程序#1有不同的方式来查找HRM,而竞争对手的应用程序#2不仅可以找到HRM,还可以让我的应用程序在之后找到它。虽然这种情况看起来很奇怪,但它是100%可重复的。

我可以猜测发生了什么:

1)竞争对手的应用程序#2在HRM上启用了一些允许找到它的设置。但我不认为这是可能的,因为我认为与BTLE配件的通信是单向的。

2)iOS 10具有默认禁用的某种隐私设置,但竞争对手的应用程序#2启用它,允许我的应用程序随后查看HRM。

这是否有意义,或者是否有人有关于什么是错的理论?

0 个答案:

没有答案