如何在 iOS 7 中使用 iBeacons 获取设备详细信息,如 UUID 或设备名称
Posted
技术标签:
【中文标题】如何在 iOS 7 中使用 iBeacons 获取设备详细信息,如 UUID 或设备名称【英文标题】:How to get device details like UUID or name of the device using iBeacons in iOS 7 【发布时间】:2013-12-02 06:45:42 【问题描述】:请任何人建议我通过 iBeacons 获取连接设备的 UUID 或设备名称或任何其他详细信息。
我正在使用方法获取设备距离、主要和次要值:
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
但我想知道设备的详细信息。 请指导我到达。
【问题讨论】:
【参考方案1】:设备不会连接到信标,因为它是一种高级的、仅限广播的接近技术。
信标会宣传它们的存在,ios 设备可以检测到这些广告。您需要事先知道信标的 UUID 才能检测到它们。 UUID 特定于一个或多个信标——使用多个具有相同 UUID 的信标可以让您确定范围内每个信标的相对接近度。
信标本身是被动的,无法检索附近 iOS 设备的详细信息——至少,不使用 iBeacon 技术。
【讨论】:
好的。我得到了你的答案。但我想知道我所在地区有哪些设备。请指导我获取。 您对“设备”的理解到底是什么——您是指其他信标(具有不同的proximityUUID)还是其他iOS 设备?此外,扫描这些设备的目的是什么——信标还是 iOS 应用? 抱歉打扰了,我要查找区域内的信标。 @laxmi 信标,您知道其 UUID 还是所有信标? @neilco,您无法使用信标 API 找到您不知道的 UUID 的信标。但是,您可以使用较低级别的 BLE 调用。我已经在 SO 中看到了代码,它显示了如何做到这一点。【参考方案2】:您可以使用以下方法获取 Proximity UUID:
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
CLBeacon *beacon = [beacons lastObject];
NSLog(@"Proximity UUID: [%@]", beacon.proximityUUID.UUIDString);
请查看此 iBeacons Tutorial for iOS 7 with CLBeaconRegion and CLBeacon 了解更多信息。
您可以将CBPeripheral
delagate 用于 UUID 和服务。
-(void) peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
NSLog(@"Services scanned !");
for (CBService *s in peripheral.services)
NSLog(@"Service found : %@",s.UUID);
【讨论】:
我已经尝试过这个链接。但是 Proximity UUID 显示 [null]。 来自该示例应用邻近 UUID 值,为空。 @Laxmi:我认为你没有初始化 Beacon。检查我的更新答案 我已经像 CLBeacon *beacon = [[CLBeacon alloc] init];甚至没有调用 didDiscoverServices 方法。 你还是需要提前知道UUID。您无法连接到您不知道其 UUID 的外围设备。这也是你无法连接到信标的事实——你听它的广告。以上是关于如何在 iOS 7 中使用 iBeacons 获取设备详细信息,如 UUID 或设备名称的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Objective-C 从 iOS 上的 iBeacon 数据包中获取信号强度值
如何使用 CoreLocation 获取多个 iBeacon?