我正在尝试一个简单的测试。
设备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的信标并阅读他们的主要和次要价值观?
我做错了什么?
答案 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!