2017-04-15 2 views
-1

J'ai le code source BLE qui affiche plusieurs avertissements et je suis nouveau à BLE. Veuillez consulter le code ci-dessous. J'ai essayé de remplacer avec readRSSI mais me dit que je ne peux pas comparer un Int avec Void. Comment puis-je obtenir une valeur Int pour readRSSI? Ou comment devrais-je changer le code?Comment arriver à iOS9 RSSI

- (void)peripheralDidUpdateRSSI:(CBPeripheral * _Nonnull)peripheral error:(NSError * _Nullable)error 
{ 
    if (!isConnected) 
     return; 
    if (rssi != peripheral.RSSI.intValue) 
    { 
     rssi = peripheral.RSSI.intValue; 
     [[self delegate] bleDidUpdateRSSI:activePeripheral.RSSI]; 
    } 
} 

* rssi est un int statique.

* isConnected est un booléen.

Edit: Le problème est que RSSI est dépréciée depuis iOS 8.0.

+0

int statique de cage de RSSI pour NSNumber * = peripheral.RSSI RSSI; –

+0

vous avez essayé ... quel est le problème auquel vous êtes confrontés ..? –

Répondre

0

Il y a deux façons d'obtenir RSSI du CBPeripheral. Le premier est quand le périphérique est découvert. Vous obtiendrez un appel à la méthode CBCentralManagerDelegate

func centralManager(_ central: CBCentralManager, 
      didDiscover peripheral: CBPeripheral, 
     advertisementData: [String : Any], 
        rssi RSSI: NSNumber) { 
    let rssi = intValue 
    ... 
} 

Si vous utilisez au premier plan, vous pouvez fournir une valeur de true à la CBCentralManagerScanOptionAllowDuplicatesKey clé dans les options de numérisation pour obtenir des appels répétés à didDiscover. Cela ne fonctionne pas en arrière-plan.

Si vous êtes connecté à un périphérique puis vous pouvez appeler périodiquement peripheral.readRSSI(). Cela se traduira par une fonction de rappel à la méthode didReadRSSICBPeripheralDelegate:

optional func peripheral(_ peripheral: CBPeripheral, 
     didReadRSSI RSSI: NSNumber, 
       error: Error?) { 
    let rssi = RSSI.intValue 
    ... 
} 
0

rapide 3

@IBAction func btnGetRSSI(_ sender: UIButton){ 

    self.selectedPeripehral.readRSSI() 
} 

func peripheral(_ peripheral: CBPeripheral, didReadRSSI RSSI: NSNumber, error: Error?) { 

    var rssiInt: Int! 

    rssiInt = RSSI.intValue 

}