Ich habe 8.0, es funktioniert gut.
-(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;
}
Da oben in iOS 8 veraltet ist, versuchen die anderen Delegaten, wird zurück melden.
-(void) peripheral:(CBPeripheral *)peripheral didReadRSSI:(NSNumber *)RSSI error:(NSError *)error {
NSLog(@"Got RSSI update in didReadRSSI : %4.1f", [RSSI doubleValue]);
}
Dies scheint eine OSX-Delegate-Methode zu sein. Apple wird wahrscheinlich bald etwas in iOS für RSSI hinzufügen.
In iOS 8.0 funktioniert didReadRSSI. In der 8.0.2 Dokumentation ist es nicht unter iOS aufgeführt.
Wenn ich setzen beide Methoden didReadRSSI in iOS aufgerufen wird 8 & peripheralDidUpdateRSSI in iOS aufgerufen wird 7.
So aktualisieren nicht auf iOS 8.0.2 bis Äpfel etwas für RSSI bringt.
Hat jemand die Betaversion von iOS 8.1 getestet?
Sieht aus wie beim Scannen nach Geräten der RSSI nicht gelesen werden kann. Wenn der Aufruf von [CBCentralManager scanForPeripheralsWithServices ...] initiiert wurde, tritt kein Effekt von ReadRSSI auf (es werden keine Delegierten aufgerufen). Wenn jedoch [CBCentralManager stopScan] ausgegeben wird, reagiert die ReadRSSI.
Hinweis: Das Gerät muss im verbundenen Zustand sein, um Befehle auszugeben, andernfalls erhalten Sie: CoreBluetooth [API MISUSE] CBPeripheral kann nur Befehle annehmen, während es sich im verbundenen Zustand befindet.
Versuchen Sie die Verbindung zu den Peripheriegeräten per [meine Antwort auf eine ähnliche Frage] (http://stackoverflow.com/a/27030526/4272525). –
Ich musste mein iPhone zurücksetzen, um es wieder in Betrieb zu nehmen, indem ich die Power- und Home-Taste gedrückt hielt. – marcelosalloum