繁体   English   中英

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

[英]Detect iBeacon with different major and minor values

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

设备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的信标并阅读他们的主要和次要价值观?

我究竟做错了什么?

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

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

而不是像

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

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

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

当然。 它刚刚使用initwithuuid主要和次要创建 - Legolas昨天

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

initWithProximityUUID:identifier:

initWithProximityUUID:major:identifier:

initWithProximityUUID:major:minor:identifier:

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

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

DidEnterRegion调用只包含主要或次要值,如果它们是该区域的一部分。

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

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

如果它不能同时使用Locate for iBeacon,那么你的某个设备就会出现问题。 如果它确实可以在一侧使用Locate for iBeacon,请将您的代码发布给遇到问题的一方。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM