检测具有不同主要和次要值的iBeacon

时间:2013-12-31 00:47:49

标签: ios objective-c cocoa-touch ibeacon

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

设备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.如果我编程监听该区域有主要设备,它仅检测设备1:1000和次要:1234。

这听起来不错吗?

假设我有100部手机充当信标,具有相同的uuid和标识符,但主要和次要值不同。我有50个电话作为特定uuid和idenfitifer的听众...我可以找到所有与该uuid的信标并阅读他们的主要和次要价值观?

我做错了什么?

4 个答案:

答案 0 :(得分:1)

初始化您的区域时,请使用

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

而不是

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

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

答案 1 :(得分:1)

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

  

不确定。它只是使用initwithuuid主要和次要 - Legolas创建的   昨天

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

initWithProximityUUID:identifier:

initWithProximityUUID:major:identifier:

initWithProximityUUID:major:minor:identifier:

如果要检测具有任何UUID的信标,则需要使用未指定主要值或次要值的第一个表单。

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

如果DidEnterRegion调用属于该区域,则它只包含主要值或次要值。

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

答案 2 :(得分:0)

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

如果它无法与双方的Locate for iBeacon一起使用,那么您的某个设备就会出现问题。如果它确实可以在一侧使用Locate for iBeacon,请在遇到问题的一方发布您的代码。

答案 3 :(得分:0)

您使用哪种委托方法作为位置管理器?如果您已经在该区域,则有时不会调用DidEnter,即在启动正在进行监控的那个之前打开发送信标。如果这是状态变化的情况监视器而你应该是好的。

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