【问题标题】:Detect iBeacon with different major and minor values检测具有不同主要和次要值的 iBeacon
【发布时间】:2013-12-31 00:47:48
【问题描述】:

我现在正在尝试一个简单的测试。

设备 1:

作为信标,UUID:XXX-XXX-XXX
专业:1000
未成年人:1234

self.peripheralData = [MyRegion peripheralDataWithMeasuredPower:nil];
[self.peripheralManager startAdvertising:self.peripheralData];

设备 2:

充当具有 UUID 的区域的侦听器:XXX-XXX-XXX

locationManager startMonitoringForRegion:_region

设备 2 不检测设备 1。如果我编程监听区域为主要:1000 和次要:1234,它只会检测设备 1。

这听起来对吗?

假设我有 100 部手机充当信标,具有相同的 uuid 和标识符,但主要和次要值不同。而且我有 50 部手机充当特定 uuid 和 idenfitifer 的侦听器……我可以找到具有该 uuid 的所有信标并读取它们的主要和次要值吗?

我做错了什么?

【问题讨论】:

  • 您能发布在两个设备上创建区域的代码吗?
  • 当然。它只是使用 initwithuuid 主要和次要创建的

标签: ios objective-c cocoa-touch ibeacon


【解决方案1】:

当你初始化你的区域时,使用

region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:identifierString];

而不是类似的东西

region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:[major integerValue] minor:[minor integerValue] identifier:identifierString];

通过不指定主要和次要值,应检测具有匹配 UUID 的所有信标。它对我有用。

【讨论】:

  • 如果我不指定主要和次要,我将如何准备它们? :-/
  • 您可以在创建信标时指定主要和次要,但对于检测信标的设备,创建用于监控的区域只会与您创建的一样具体。即,如果您指定 uuid、major 和 minor 它将寻找那个信标。如果您仅指定 uuid 和专业,它将查找与它们匹配的信标。并且仅指定 UUID 将检测具有该 UUID 的所有信标。
  • 好的,它对我有用。我的错误是我重用了这些区域而不是创建新区域。
【解决方案2】:

我认为你的问题的关键在于这条评论:

当然。它只是使用 initwithuuid major 和 minor – Legolas 创建的 昨天

创建信标区域有 3 种不同的调用:

initWithProximityUUID:identifier:

,

initWithProximityUUID:major:identifier:

initWithProximityUUID:major:minor:identifier:

如果要检测具有任何 UUID 的信标,则需要使用不指定主​​要或次要值的第一种形式。

然后您还需要调用 startRangingBeaconsInRegion: 并查看测距调用中返回的信标对象。

DidEnterRegion 调用仅包含主要或次要值(如果它们是区域的一部分)。

测距回调包括所有检测到的信标,包括它们的主要和次要值、距离和接近度等。

【讨论】:

  • 没错。如果您需要具有不同 UUID、主要或次要的区域,则需要创建一个新区域。 UUID、主要和次要值都是信标区域的只读属性。
【解决方案3】:

要消除代码中的问题,请尝试使用我在应用商店中的免费 Locate for iBeacon 应用程序执行完全相同的操作。尝试使发射器/探测器的一侧或两侧成为这个应用程序与您的自定义应用程序。

如果它在两侧都无法与 Locate for iBeacon 一起使用,则说明您的其中一台设备有问题。如果它在一侧与 Locate for iBeacon 一起工作,请为有问题的一侧发布您的代码。

【讨论】:

    【解决方案4】:

    您为位置管理器使用了哪些委托方法?有时如果您已经在该区域中,则不会调用 DidEnter,即您在启动正在执行监视的信标之前打开传输信标。如果是这种情况,请监控状态变化,你应该很好。

    另外,我强烈推荐使用 David 的 Locate iBeacon 应用。它将真正加快您的开发过程。谢谢 D!

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 2017-05-25
      • 2015-08-29
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多