Core Bluetooth — постоянное обновление RSSI устройств в пределах досягаемости

Я только что начал с базовой платформы Bluetooth для iOS и разрабатываю приложение, которое должно постоянно сканировать устройства BLE, чтобы я мог получать их номер 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];

}

Этот код, кажется, работает и выполняет сканирование примерно каждую минуту, но я точно не знаю, почему он работает...

Документация по ядру bluetooth довольно хороша. sparse, поэтому, если у кого-то есть какие-либо идеи о том, как это сделать, или есть лучший способ сделать то, что я пытаюсь сделать, я был бы признателен за помощь!

14
задан beryllium 6 April 2012 в 19:36
поделиться