比较/区分两个“相同的”CLBeacon
Posted
技术标签:
【中文标题】比较/区分两个“相同的”CLBeacon【英文标题】:Compare/differentiate two "identical" CLBeacons 【发布时间】:2014-08-02 21:00:26 【问题描述】:是否可以区分“相同的”CLBeacons?意思是,CLBeacon 具有相同的 UUID,主要和次要,但来自不同的设备?
在我可以读到的 CLBeacon 类参考中,有一个属性 accuracy 可用于此目的。但是,假设两个设备在同一个位置上彼此重叠(可能不是现实世界的情况),这仍然是一个可靠的论点吗?
【问题讨论】:
【参考方案1】:CoreLocation API 无法做到这一点。如果您有两个具有相同 ProximityUUID/主要/次要组合的不同信标,则每个信标将在 ios 测距回调中独立显示,但您将拥有无法知道哪个是哪个,因为没有其他标识符可以区分它们。
虽然内部 CoreLocation 实现尚未发布,但我的测试表明,CoreLocation 会锁定蓝牙 Mac 地址之外的唯一信标,使其能够意识到广播相同标识符的两个不同信标不仅仅是一个信标。不幸的是,CoreLocation 不允许您读取此 Mac 地址。
虽然您可以使用 CoreBluetooth API 读取 Mac 地址(或至少是它的派生),但您无法读取 iBeacon 标识符,因此无法将两者关联起来。 (见:http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html)
底线是,如果你想在 iOS 上区分两个 iBeacon,你必须给它们不同的标识符。
【讨论】:
感谢您的专业回答和澄清情况!我想使用主要和次要作为数据库中内容的参考。通过完全放弃我的第一种方法,您的评论使我找到了一个更好的解决方案。但是,我认为那是编程。 @davidgyoung 从理论上讲,如果我是硬件生产商,我可以创建一个暴露 macaddresses 的 SDK,有点像 Estimote 对 ESTBeacon 类所做的那样。对吗? 我看不出有任何方法可以做到这一点。我不是 Estimote 信标方面的专家,但我的理解是 MAC 地址仅在您使用 CoreBluetooth 连接到信标后才会填充,而不是在您扫描信标时填充。虽然可以构建一个信标,让您连接到它并使用包含它的自定义 GATT 属性公开 mac 地址,但无法在常规扫描情况下使用它。连接到信标会阻止它做广告,因此一次只有一个移动设备可以使用这种技术来读取 mac。【参考方案2】:您可以尝试通过 Core Bluetooth 检查广告数据,但从位置的角度来看,如果它们具有相同的 UUID(主要和次要),那么它们是同一个区域,尝试区分它们是没有意义的
【讨论】:
谢谢,我现在有了一个全新的方法来处理我的小 iBeacon 项目。以上是关于比较/区分两个“相同的”CLBeacon的主要内容,如果未能解决你的问题,请参考以下文章
在 Wordpress 中使用 Jquery 和 css 区分两个相同的 HTML ID 元素
依次显示两个相同的警报视图。如何区分来自警报 1 和警报 2 的文本?
ABAP我在LOOP里READ TABLE KEY值相同 怎么区分
使用 Core Location 时,CLBeacon (iBeacon) 和 CLLocation (Coordinates) 之间应该如何选择?