1

Bluetooth 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% 再現可能です。

何が起こっているかについて、次の 2 つの推測を行うことができます。

1) 競合他社のアプリ #2 では、HRM を検出できるようにする設定が有効になっています。しかし、BTLEアクセサリとの通信は一方向だと思うので、これは可能ではないと思います。

2) iOS 10 には、デフォルトで無効になっているある種のプライバシー設定がありますが、競合他社のアプリ #2 はそれを有効にしており、私のアプリは後で HRM を見ることができます。

これは意味がありますか、それとも何が悪いのかについて誰かが理論を持っていますか?

4

0 に答える 0