iOS用のコアBluetoothフレームワークから始めたばかりで、毎分または毎分のRSSI番号を取得できるようにBLEデバイスを常にスキャンする必要があるアプリケーションを開発していますそう。コアのBluetooth - 範囲内のデバイスの一定のRSSIアップデート
現在、私が持っている:
manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[manager scanForPeripheralsWithServices:nil options:options];
これは、BLEデバイスのための私のアプリのスキャンを開始し、デバイスが検出されたときに、このデリゲートメソッドを呼び出します。
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
NSLog(@"Did discover peripheral. peripheral: %@ rssi: %@, UUID: %@ advertisementData: %@ ", peripheral, RSSI, peripheral.UUID, advertisementData);
//Do something when a peripheral is discovered.
rssiLabel.text = [RSSI stringValue];
[manager retrievePeripherals:[NSArray arrayWithObject:(id)peripheral.UUID]];}
この方法は私を取得し、周辺のRSSI数います私は表示することができます。最後の行は、このデリゲートメソッドを呼び出します。
- (void) centralManager:(CBCentralManager *)central didRetrievePeripherals:(NSArray *)peripherals {
NSLog(@"Currently known peripherals :");
int i = 0;
for(CBPeripheral *peripheral in peripherals) {
NSLog(@"[%d] - peripheral : %@ with UUID : %@",i,peripheral,peripheral.UUID);
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[manager scanForPeripheralsWithServices:nil options:options];
}
このコードは、スキャンおよそ1分毎に作業してやっているように見えるが、それは働いて、なぜ私は正確に分からない...
ドキュメントコアのブルートゥースはかなり疎であるので、もし誰かがこれをやる方法について何か考えているのであれば、私が達成しようとしていることをする良い方法があります。
が動作しているようだ...どのくらいの頻度でRSSIが更新されますか?編集:1分に1回?私はあなたが接続していないときにタイムアウトがあると思うので、スキャンをもう一度開始します。 – chwi
私は自分でドキュメントを読んでいます。だから、私よりもさらに進んでいます。質問、なぜあなたは代理メソッドdidRetrievePeripheralsのscanForPeripheralsWithServicesを呼び出していますか? CBCentralManagerが割り当てられた後は、すでにそれを呼び出しています。これはあなたが言及した繰り返しスキャンを引き起こしている可能性があります。 – mkr707
> = 7.0のための私の2セント:retrievePeripheralsWithIdentifiersは今から使用する必要があります。 –