如何在iOS9中获取RSSI
我有一个BLE源代码,显示了几个警告,我是新手 可悲的。请参阅下面的代码。我尝试用readRSSI替换,但告诉我不能将Int与Void进行比较。如何获取readRSSI的Int值?或者我应该如何更改代码如何在iOS9中获取RSSI,ios,objective-c,ios9,core-bluetooth,Ios,Objective C,Ios9,Core Bluetooth,我有一个BLE源代码,显示了几个警告,我是新手 可悲的。请参阅下面的代码。我尝试用readRSSI替换,但告诉我不能将Int与Void进行比较。如何获取readRSSI的Int值?或者我应该如何更改代码 - (void)peripheralDidUpdateRSSI:(CBPeripheral * _Nonnull)peripheral error:(NSError * _Nullable)error { if (!isConnected) return; if
- (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是一个静态int
*isConnected是一个布尔值
编辑:问题是,自iOS 8.0以来,RSSI已被弃用。有两种方法可以获得
CBPeripheral
的RSSI。第一个是发现外围设备时。您将得到对CBCentralManagerDelegate
方法的调用
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any],
rssi RSSI: NSNumber) {
let rssi = intValue
...
}
如果您在前台运行,则可以为扫描选项中的键CBCentralManagerScanOptionAllowDuplicatesKey
提供true
to值,以获得对didDiscover
的重复调用。这在后台不起作用
如果连接到外围设备,则可以定期调用peripheral.readRSSI()
。这将导致回调到didrearssi
cbperipheraldegate
方法:
optional func peripheral(_ peripheral: CBPeripheral,
didReadRSSI RSSI: NSNumber,
error: Error?) {
let rssi = RSSI.intValue
...
}
有两种方法可以获得
CBPeripheral
的RSSI。第一个是发现外围设备时。您将得到对CBCentralManagerDelegate
方法的调用
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any],
rssi RSSI: NSNumber) {
let rssi = intValue
...
}
如果您在前台运行,则可以为扫描选项中的键CBCentralManagerScanOptionAllowDuplicatesKey
提供true
to值,以获得对didDiscover
的重复调用。这在后台不起作用
如果连接到外围设备,则可以定期调用peripheral.readRSSI()
。这将导致回调到didrearssi
cbperipheraldegate
方法:
optional func peripheral(_ peripheral: CBPeripheral,
didReadRSSI RSSI: NSNumber,
error: Error?) {
let rssi = RSSI.intValue
...
}
斯威夫特3
@IBAction func btnGetRSSI(_ sender: UIButton){
self.selectedPeripehral.readRSSI()
}
func peripheral(_ peripheral: CBPeripheral, didReadRSSI RSSI: NSNumber, error: Error?) {
var rssiInt: Int!
rssiInt = RSSI.intValue
}
斯威夫特3
@IBAction func btnGetRSSI(_ sender: UIButton){
self.selectedPeripehral.readRSSI()
}
func peripheral(_ peripheral: CBPeripheral, didReadRSSI RSSI: NSNumber, error: Error?) {
var rssiInt: Int!
rssiInt = RSSI.intValue
}
rssi框架的静态int到NSNumber*rssi=peripheral.rssi;你试过。。。你面临的问题是什么?这能回答你的问题吗?rssi框架的静态int到NSNumber*rssi=peripheral.rssi;你试过。。。你面临的问题是什么?这能回答你的问题吗?