iBeacon监控具有相同UUID和不同主要,次要的多个信标

问题描述 投票:0回答:2

我有多个iBeacons具有相同的UUID但不同的主要和次要号码。它可以是主要和次要的不同组合,但UUID保持不变。比如说,

  • 设备#1 - UUID xyz,主要1,次要1
  • 设备#2 - UUID xyz,主要1,次要2
  • 设备#3 - UUID xyz,专业2,辅修1
  • .....
  • 设备#n - UUID xyz,主要10,次要1

此外,这些iBeacons位于接近的范围内,范围从1-50英尺。因此,它们的区域可以相互交叉。

在我的iOS应用程序中,我想检测区域中具有相同UUID的所有iBeacons,然后遍历它们并读取每个iBeacons的主要和次要以检测其中哪一个已被检测到。

我可以将init(proximityUUID: UUID, identifier: String)与我的UUID一起使用然后迭代它们吗?

ios iphone mobile bluetooth ibeacon
2个回答
1
投票

有两种不同的iOS CoreLocation API,您需要使用第一种用于此目的:

1. Beacon Ranging(你想要什么)

你将locationManager.startRangingBeacons(in: region)称为区域定义,留下主要和次要的零。你展示init(proximityUUID: UUID, identifier: String)的构造函数正是如此。

这将为您提供locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)每秒一次的回调,其中包含与您的区域定义匹配的所有CLBeacon对象的数组。您可以迭代此数组以查看所有这些数组。

2.信标监控(你不想要的)

你将locationManager.startMonitoring(region: region)称为区域定义,留下主要和次要的零。

每次至少出现一个与区域定义匹配的信标,或者与该区域匹配的所有信标都消失时,这将为您提供locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion)或等效的didExitRegion方法的回调。

这将不允许您迭代所有匹配的信标,因为回调仅包括区域定义而不是匹配的信标列表。


1
投票

是的,你绝对可以!当检测到另一个iBeacon时,您将不会获得新的委托通知,除非您创建具有不同ID的多个侦听器但是当您处于给定UUID的Region中时,您可以遍历范围内的所有信标并获取其主要和次要

© www.soinside.com 2019 - 2024. All rights reserved.