我有8.0,它工作正常。
-(void) startScanForRSSI{
timerRSSI = [NSTimer scheduledTimerWithTimeInterval:10.0f target:self selector:@selector(detectRSSI) userInfo:nil repeats:YES];
}
- (void)detectRSSI {
if (state == ...) {
peripheral.delegate = self;
[peripheral readRSSI];
} else {
if (timerRSSI && [timerRSSI isValid]) {
[timerRSSI invalidate];
}
}
}
- (void)peripheralDidUpdateRSSI:(CBPeripheral *)peripheral error:(NSError *)error {
NSLog(@"Got RSSI update: %4.1f", [peripheral.RSSI doubleValue]);
NSNumber *rssiNum = peripheral.RSSI;
}
由于上面在iOS 8中不推荐使用,所以尝试使用另一个代理时,会报告回来。
-(void) peripheral:(CBPeripheral *)peripheral didReadRSSI:(NSNumber *)RSSI error:(NSError *)error {
NSLog(@"Got RSSI update in didReadRSSI : %4.1f", [RSSI doubleValue]);
}
这似乎是一个OSX委托方法。苹果很可能会在iOS中为RSSI添加一些内容。
在iOS 8.0中,didReadRSSI正在工作。在8.0.2文档中,它不在iOS下列出。
如果我把两种方法didReadRSSI被称为iOS的8 & peripheralDidUpdateRSSI被称为iOS的7
,直到苹果把东西RSSI所以不更新到iOS 8.0.2。
有没有人试过iOS 8.1 beta?
看起来像扫描设备时无法读取RSSI。如果已启动对[CBCentralManager scanForPeripheralsWithServices ...]的调用,则不会发生ReadRSSI的影响(不会调用委托)。但是如果[CBCentralManager stopScan]发出,ReadRSSI开始响应。
另请注意:设备必须处于连接状态才能发出命令,否则您将得到: CoreBluetooth [API错误] CBPeripheral只能在连接状态下接受命令。
尝试连接到每个[我对类似问题的回答]外设(http://stackoverflow.com/a/27030526/4272525)。 – 2014-11-20 02:12:17
我不得不重置我的iPhone,让它再次工作,按住电源和主屏幕按钮。 – marcelosalloum 2015-10-28 17:56:36