2024 iBeacon BLE - Xcode 15.4 iOS iBeacon 应用广告集和信标监控问题

问题描述 投票:0回答:1

我开发的iOS应用程序使用startMonitoring(for:region)方法通过didEnterRegion和didExitRegion委托方法检测区域进入和退出事件。 区域监控工作了多年,最近停止工作了。

  • 现在,当我打开用于管理信标的应用程序时,我的应用程序“神奇地”开始工作几分钟(设置 UUID、major 、minor - 我正在使用 KBeacon 和 FeasyBeacon iOS 应用程序)
  • 如果我的应用程序出现故障,仅打开 Kbeacomn 或 FeasyBeacon 应用程序就无法开始工作。如果我的代码不正确,则在代码修复之前该应用程序将永远无法运行。
  • Apple 支持声明 startMonitoring 仍然有效,尽管它已被弃用,并且他们同意如果我的应用程序损坏,当我打开信标管理应用程序时它不会开始工作

剩下信标(我的应用程序使用这些相同的信标多年)。现在我正在使用多个应用程序来确保信标正在广告正确的 iBeacon 信号,例如 Beacon Scope、BT Inspector、LightBlue,而且似乎所有信标都仅处于 iBeacon 模式,它们广告 UUID、主要、次要,他们只说 iBeacon 格式。我没有更新beacon固件

现在苹果技术支持说

  • 事实上 KBeacon/FeasyBeacon 应用程序能够看到信标并拥有信息,这意味着信标不处于 iBeacon 模式。
  • iBeacon 只需要发送 ADV_NONCONN_IND 数据包,这将指示任何扫描者不要发送 SCAN_REQ(扫描请求)。
  • 扫描请求是特定的 BLE 命令,根据 iBeacon 规范的定义,信标必须是不可扫描的。
  • 他们还表示,问题可能在于这些是双信标,可以广告 ibeacon 或其他格式 - 事实上,尽管不使用 CoreLocation,kBeacon 仍能够从信标看到广告,这意味着信标不会以 iBeacon 的形式进行广告,直到kBeacon 已推出,或者他们的广告方式导致 iBeacon 广告不够合规,无法被识别。

我的问题

  • 有谁知道/知道为什么我的应用程序仅在我打开 KBeacon 或 FeasyBeacon 应用程序后才开始检测区域?这些信标应用程序发送扫描请求,信标发送扫描响应,似乎 iOS 只能在信标发送回扫描响应后才能看到信标,但 iOS 应该能够在正常扫描期间看到信标
  • 有关“嗅探器”应用程序的任何建议都可以帮助我找出嗅探器日志和广告内容,因为这是弄清楚 KBeacon/FeasyBeacon 应用程序、iOS 和 iBeacon 信标发生了什么情况的唯一可靠方法。
  • iBeacon 不可扫描意味着什么?
  • 有人可以给我推荐有关 BLE 和 iBeacon 规范的书籍/资源吗?

谢谢你

ios bluetooth-lowenergy ibeacon beacon
1个回答
0
投票

一些提示:

  1. 为了消除您正在测试的硬件信标的问题,请使用现成的信标发射器(例如适用于 iOS 或 Android 的 BeaconScope)来宣传 iBeacon。您的应用程序是否会在不同时运行其他应用程序的情况下选择它?如果是这样,这表明您的硬件信标有问题。

  2. 您可以使用适用于 Android 的 Nordic NRF Connect 应用程序来查看硬件信标正在广播的确切字节,并使用它来扫描您的信标。如果您发布它读取的字节,我们也许可以说更多。

  3. ADV_NONCONN_IND 只是广告中的一个标志字段,按照 Apple 支持人员的说法工作。在任何平台上检测 iBeacon 都不需要扫描响应,因此我非常怀疑这就是问题所在。但如果确实如此,上述测试将有助于查明这一点。

  4. Apple iBeacon 规范是专有的,Apple 仅与在 Apple 注册并与其签署保密协议的人员共享。幸运的是,逆向工程非常简单,这正是我在苹果生气并让我的前老板删除我的博客文章之前所做的:http://www.davidgyoungtech.com/2013/10/01/reverse -工程-ibeacon-profile

  5. 如果你真的想要一本书,我合着了这本书。虽然已经过去好几年了,但情况并没有太大改变。

© www.soinside.com 2019 - 2024. All rights reserved.