iBeacon 监控具有相同 UUID 和不同主要、次要的多个信标
iBeacon monitoring multiple beacons with same UUID and different major, minor
我有多个具有相同 UUID 但主要和次要编号不同的 iBeacon。它可以是 major 和 minor 的不同组合,但 UUID 保持不变。比如说,
- 设备 #1 - UUID xyz,主要 1,次要 1
- 设备 #2 - UUID xyz,主要 1,次要 2
- 设备 #3 - UUID xyz,主要 2,次要 1
- .....
- 设备 #n - UUID xyz,主要 10,次要 1
此外,这些 iBeacon 的位置非常接近,范围为 1 - 50 英尺。因此,它们的区域可以相互交叉。
在我的 iOS 应用程序中,我想检测区域内所有具有相同 UUID 的 iBeacon,然后遍历它们并读取每个 iBeacon 的主要和次要以检测检测到其中一个。
我可以使用吗
init(proximityUUID: UUID,
identifier: String)
使用我的 UUID 然后遍历它们?
是的,你绝对可以!当检测到另一个 iBeacon 时,您不会收到新的委托通知,除非您创建多个具有不同 ID 的侦听器,但是一旦您位于给定 UUID 的区域中,您就可以遍历范围内的所有信标并获取它们的 major 和 minor
有两种不同的 iOS CoreLocation API,为此您需要使用第一种:
1.信标测距(你想要什么)
您调用 locationManager.startRangingBeacons(in: region)
的区域定义将 major 和 minor 设为零。您显示的构造函数 init(proximityUUID: UUID,
identifier: String)
正是这样做的。
这将使您每秒回调一次 locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)
,其中包含与您的区域定义匹配的所有 CLBeacon
对象的数组。您可以遍历此数组以查看所有这些。
2。信标监控(你不要的)
您调用 locationManager.startMonitoring(region: region)
时使用的区域定义将 major 和 minor 设为 nil。
每次出现至少一个个匹配区域定义的信标,或者所有匹配该区域的信标消失。
这不会让您遍历所有匹配的信标,因为回调仅包括区域定义而不是匹配的信标列表。
我有多个具有相同 UUID 但主要和次要编号不同的 iBeacon。它可以是 major 和 minor 的不同组合,但 UUID 保持不变。比如说,
- 设备 #1 - UUID xyz,主要 1,次要 1
- 设备 #2 - UUID xyz,主要 1,次要 2
- 设备 #3 - UUID xyz,主要 2,次要 1
- .....
- 设备 #n - UUID xyz,主要 10,次要 1
此外,这些 iBeacon 的位置非常接近,范围为 1 - 50 英尺。因此,它们的区域可以相互交叉。
在我的 iOS 应用程序中,我想检测区域内所有具有相同 UUID 的 iBeacon,然后遍历它们并读取每个 iBeacon 的主要和次要以检测检测到其中一个。
我可以使用吗
init(proximityUUID: UUID,
identifier: String)
使用我的 UUID 然后遍历它们?
是的,你绝对可以!当检测到另一个 iBeacon 时,您不会收到新的委托通知,除非您创建多个具有不同 ID 的侦听器,但是一旦您位于给定 UUID 的区域中,您就可以遍历范围内的所有信标并获取它们的 major 和 minor
有两种不同的 iOS CoreLocation API,为此您需要使用第一种:
1.信标测距(你想要什么)
您调用 locationManager.startRangingBeacons(in: region)
的区域定义将 major 和 minor 设为零。您显示的构造函数 init(proximityUUID: UUID,
identifier: String)
正是这样做的。
这将使您每秒回调一次 locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)
,其中包含与您的区域定义匹配的所有 CLBeacon
对象的数组。您可以遍历此数组以查看所有这些。
2。信标监控(你不要的)
您调用 locationManager.startMonitoring(region: region)
时使用的区域定义将 major 和 minor 设为 nil。
每次出现至少一个个匹配区域定义的信标,或者所有匹配该区域的信标消失。
这不会让您遍历所有匹配的信标,因为回调仅包括区域定义而不是匹配的信标列表。