• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

iOS如何检测AirPods的信号强度?

iOS cps12345 6天前 11次浏览 0个评论

解决

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if let power = advertisementData[CBAdvertisementDataTxPowerLevelKey] as? Double{
   print("Distance is ", pow(10, ((power - Double(truncating: RSSI))/20)))
   }
}

影响RSSI的因素

RSSI读数不是很稳定,并且高度依赖于环境

它也可能由于多种因素而变化,包括感测/发射无线电的功率和灵敏度以及环境因素(您在室内,室外?附近有很多人吗?是否有嘈杂的无线环境,以及依此类推)。

但是,问题在于信标信号实际上是无线电波,并且可以被金属,墙壁,水等吸收。由于它们在常用的2.4GHz频带中发送无线电信号,因此从信标接收到的信号强度变化很大,原因是干扰。

找出距离的最常用公式之一是

d = 10 ^((TxPower-RSSI)/ 20)

TxPower通常称为发射功率

如何从BLE广播数据获取TxPower

BLE广播数据中将提供txPower值(仅在广播方(外围设备)提供其Tx功率电平时才可用)。

根据Apple文档,CBAdvertisementDataTx中的CBAdvertisementDataTxPowerLevelKey的值

访问原始广播数据的委托方法

optional func centralManager(_ central: CBCentralManager, 
                 didDiscover peripheral: CBPeripheral, 
           advertisementData: [String : Any], 
                        rssi RSSI: NSNumber)
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址