ios - 如何限制信标的广告范围?

标签 ios ios7 bluetooth-lowenergy ibeacon

是否可以限制信标的范围,以便只有在一定近距离(或邻近)内的设备才能识别并连接到信标?比方说,0.5 米区域外的设备不应该能够看到或连接到信标。我正在使用 iOS 设备作为信标。在 Apple 的 CoreLocation API 中,有一个名为 peripheralDataWithMeasuredPower 的方法在CLBeaconRegion类说:

peripheralDataWithMeasuredPower: Retrieves data that can be used to advertise the current device as a beacon.

(NSMutableDictionary *)peripheralDataWithMeasuredPower:(NSNumber *)measuredPower

Parameters:

measuredPower: The received signal strength indicator (RSSI) value (measured in decibels) for the device. This value represents the measured strength of the beacon from one meter away and is used during ranging. Specify nil to use the default value for the device.

这可以用来限制信标的范围吗?如果是,我无法理解如何确定为 measurePower 参数设置的值?他们试图通过 表达什么...值表示从一米外测量的信标强度..

如果这是一个非常基本的问题,请原谅。我最近开始了 iOS 开发,非常感谢您的帮助。谢谢。

最佳答案

不幸的是,没有特殊硬件就没有简单的方法来调整 iBeacon 的范围。

  1. 您提到的功率场只是 iBeacon 传输的校准值。它不会影响 iBeacon 的实际物理 radio 范围。 如果 50 米外的 iPhone 可以看到发射器,则改变功率场值根本不会改变这一点。它唯一做的就是改变作为距离输入的校准常数iOS 软件中的估计算法(用于精度和接近度字段)。改变功率场会影响 API 返回的估计距离,但不会改变首次检测到 iBeacon 的实际距离。

  2. 改变标准蓝牙 iBeacon 的传输功率几乎是不可能的。从理论上讲,您可以使用金属屏蔽在发射器周围构建一个“法拉第笼”以减弱其功率,但我的经验是它不是很有效并且很容易受到屏蔽中微小缺陷的影响。如果您想更改传输功率,您必须让某人为您构建定制硬件。

替代软件是使用测距 API 在 iBeacon 可见时跟踪它,并且仅在估计距离足够近时才执行操作,例如您建议的 0.5 米。这很好用——只在前台。

如果您需要在后台近距离唤醒您的应用程序,则此方法无效。您可以做的最好的事情是让监控 API 在首次检测到 iBeacon 时唤醒您的应用程序,然后向用户发送通知并开始测距。如果用户选择将应用程序带到前台(50 米处),您可以继续监视,然后在 0.5 米处执行所需的操作。如果用户不选择将应用程序带到前台,iOS 只会给你大约 5 秒的时间来继续测距,然后它会暂停你的应用程序。这次距离从50米变成0.5米的可能性很小。

关于ios - 如何限制信标的广告范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719659/

相关文章:

ios - Xcode 预处理器宏检查 Base SDK 是否 >= iOS 7.0

ios - 以编程方式截取屏幕截图时,UISegmentedControl 中选定段的标题消失

bluetooth - 如何获取核心蓝牙外设的真实UUID?

android - 电池电量状态 (0x2A1B) 蓝牙规范是什么意思?

ios - 停止播放系统声音

ios - 带有 UIImageView 的 CALayer

ios - 无法使用 xcodebuild 归档应用程序

java - Bluetooth LE 通过应用程序在 Android 设备之间发送字符串数据

ios - 如何从 iOS 网络应用程序与蓝牙设备配对?

ios - 如何在 Swift 中立即隐藏导航栏?