我有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