我正在为iBeacon开发移动应用程序.
我们的产品适用于iOS和Android平台.在iOS上,监视iBeacon是默认功能,因此他们使用其默认方法.为了在Android上实现iBeacon,我使用AltBeacon.但是我们发现平台之间存在1个大差异.必须在1米半径内工作的信标(在iOS上),我的应用程序可以在3米外看到.这对我们的产品来说是一个大问题,因为信标必须在两个平台上以相同的距离工作.因此,在iOS上,他们无法更改监控逻辑.我可以更改监视的敏感性吗?
解决方法:
很难让不同的设备在完全相同的距离处检测信标.主要问题是,不同的移动设备可能具有完全不同的蓝牙无线电和天线,它们的增益也有很大不同.尽管检测到的信号电平在iOS设备上相当一致(但iPod touch设备具有更高的增益接收器并进一步检测信标),但Android设备遍布整个地图.
尝试使这种方式更加一致的一种方法是将监视与测距相结合.无需在监视回调上触发操作,而是在检测到信标后立即开始测距,然后获取距离估计值,并且仅在距离估计值足够接近时才触发操作.我写了一个blog post来描述这个过程.
前述技术仍然存在问题,尤其是在Android上,因为准确的距离估算需要特定Android设备模型上的蓝牙接收器匹配的公式. Android信标库默认情况下使用Nexus 5计算,但是这可能会大大高估或低估了其他型号上的距离.因此,我们使该库支持基于每个设备的距离公式的可扩展数据库,并且为其他设备提供了instructions for calculating the proper formula并将其添加到数据库中.如果您知道要针对特定设备,则可以选择这种方法.
但是,如果要让所有Android设备在非常特定的距离处检测到信标,则不太可能成功.那里有大量的Android设备,因此您不太可能对所有这些设备都获得准确的距离估算值,因此您必须愿意接受某些设备上的估算值不准确或调整用例,因此没有必要.