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 - UITableView 在 iOS 8 中很好,但在 iOS7 中崩溃了

ios - BLE 广告数据中有什么?

ios - iBeacon 是专有的吗?

ios - _UILayoutGuide bottomLayoutGuide 长度为零

ios - 如何将 SKSprite 带到 Storyboard 的用户界面前面?

ios - 如何从父ViewController中的ContainerView获取值?

ios - 试图限制iOS中UITextField的字符数

ios - Google Analytics SDK 在 Xcode 6.3 中产生问题

swift - 如何在 Swift 中读取 BLE 特征 float

ios - 在 Swift 中遍历多个数组