我知道如何使用与其回调scanForPeripheralsWithServices
一起使用的didDiscoverPeripheral
来接收新的可用外设通知,以填充UITableView
列表。
但是,当未连接蓝牙设备不再可用时,如何接收通知?
/****************************************************************************/
/* Discovery */
/****************************************************************************/
- (void) startScanningForUUIDString:(NSString *)uuidString
{
NSArray *uuidArray = [NSArray arrayWithObjects:[CBUUID UUIDWithString:uuidString], nil];
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
[centralManager scanForPeripheralsWithServices:uuidArray options:options];
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
if (![foundPeripherals containsObject:peripheral]) {
[foundPeripherals addObject:peripheral];
[discoveryDelegate discoveryDidRefresh];
}
}
答案 0 :(得分:3)
我认为您想知道的原因是因为您想刷新foundPeripherals
数组并更新UI正确吗?好吧,因为你没有与设备的当前联系,所以无法知道设备何时移开或靠近。您的解决方案是这样的:启动一个NSTimer,清除您的foundPeripherals
并在它发生时再次开始发现。如果您在新发现中看到它,它仍然存在,您应该重新添加到foundPeripherals
。否则它就消失了。