mm2*_*m24 2 hardware uuid ios bluetooth-lowenergy ibeacon
UUID,主要和次要值提供iBeacon的标识信息.
主要值和次要值用于区分区域内的产品或元素.Apple文档很清楚,如何做到这一点,商店的例子很安静.
然而,只有当每个区域(或子区域)存在一个元素类别时,所有这些都能很好地工作,但如果我们希望APP能够区分同一区域内具有相同次要和主要的元素,则它不能很好地工作.
是否有一些与iBeacon关联的其他唯一标识符可以被监视/检测,以便我可以区分具有相同次要和主要值的iBeacons?
编辑:其他信息
为了测试这个,我创建了两个具有相同UUID和相同主要和次要值的iBeacons,然后开始监视我指定的UUID中的iBeacons.
我为iBeacons实现的回调代码范围如下:
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
    NSLog(@"Did range %lu beacon in region %@", (unsigned long)[beacons count], region.identifier);
    for (int i=0; i<[beacons count]; i++) {
        CLBeacon *beacon = [beacons objectAtIndex:i]; 
        // <- breakpoint!
        NSString *_cnt = [[NSString alloc] initWithFormat:@"Number of beacons is : %lu and the current one %i is %f away from you %@",(unsigned long)[beacons count], i, beacon.accuracy, beacon.description];
        }
   }
当我向信标线添加断点时,我看到检测到的两个CLBeacon对象具有相同的信息:
CLBeacon (uuid:<__NSConcreteUUID 0x17003d8e0> 74278BDA-B644-4520-8F0C-720EAF059935, major:20, minor:0, proximity:1 +/- 0.17m, rssi:-42)
CLBeacon (uuid:<__NSConcreteUUID 0x17003e840> 74278BDA-B644-4520-8F0C-720EAF059935, major:20, minor:0, proximity:2 +/- 0.28m, rssi:-47)
因此,除非我指定一个主要和次要值,否则我现在无法区分它们.
这是我用来配置iBeacons的应用程序的屏幕截图(我没有其他可以配置的字段):

我想知道在蓝牙信号内是否有某种识别每个硬件的唯一标识符.
这实际上是一个常见问题,很难解决. 虽然最佳实践通常说不同的信标不应共享相同的ProximityUUID/major/minor,但有时合法的边缘情况是多个信标在同一位置传输相同的标识符. (例如,在Radius Networks,我们将默认标识符放入我们的信标中,因此如果您订购其中两个标识符,它们最初将具有相同的标识符,直到您更改它们为止.)
使用CoreLocation API,具有相同标识符的两个不同信标将在didRangeBeacons:InRegion:回调中显示为两个信标.这是因为在内部,iOS使用硬件地址保持唯一性.遗憾的是,CoreLocation不公开硬件mac地址或任何其他指示哪个具有相同标识符的信标是哪个.
在前台使用CoreBluetooth API,您可以看到每个iBeacon的回调.虽然你无法获得他们的硬件mac地址,但iOS确实为每个人分配了一个唯一的标识符(可能基于mac地址的散列),所以你可以区分它们.不幸的是,iOS不允许您使用CoreBluetooth读取广告的内容,因此您无法读取iBeacon标识符.你所能做的就是计算有多少不同的蓝牙LE可能会或可能不是iBeacons.
通过使用何时出现设备及其RSSI读数的时间戳,可以做一些hacky技巧来尝试关联CoreBluetooth和CoreLocation的信息.但是,当许多信标出现时,这些技巧并不是非常可靠并且容易失败.
| 归档时间: | 
 | 
| 查看次数: | 919 次 | 
| 最近记录: |