Я только начал с базовой платформы 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];
}
Этот код, кажется, работает и выполняет сканирование примерно каждые 1 минуту, но я точно не знаю, почему он работает...
Документация по базовому bluetooth довольно скудна, поэтому, если кто-нибудь знает, как это сделать, или имеет лучший способ сделать то, что я пытаюсь выполнить, я был бы благодарен за помощь!