繁体   English   中英

如何找到没有信标标识符的iBeacon?

[英]How to find iBeacon without beacon identifier?

我使用以下代码行创建CLBeaconRegion ,然后通过以下方式调用location manager

 let beaconRegion:CLBeaconRegion = CLBeaconRegion(proximityUUID: beaconUUID as UUID,
                                                                 identifier: beaconIdentifier)

///  save a beacon region for stopping after.
                (beaconInfo as! BeaconInfo).beaconRegion = beaconRegion

                ///  start monitoring the specified region.
                self.locationManager.startMonitoring(for: beaconRegion)

                ///  start calculating ranges for beacons in the specified region.
                self.locationManager.startRangingBeacons(in: beaconRegion)

位置管理器委托中的代码为:

func locationManager(_ manager: CLLocationManager,
                         didRangeBeacons beacons: [CLBeacon],
                         in region: CLBeaconRegion) {

        ///  it may be assumed no beacons that match the specified region are nearby.
        if beacons.count == 0 {
            print ("beacon.count = 0")
            return
        }
else
{
     \\executed rest of the code
}

其中beaconUUID是我的iBeacon的UUID,而beaconIdentifier是标识符字符串。 问题是,由于我的应用程序将检测到通用iBeacon,因此我可能不知道它们的beaconIdentifier字符串(这不是UUID,而只是一个标识符)。 有什么方法可以将其作为通用字符串或nil传递(以消除依赖关系)?

编辑:添加了CLLocationManager代码

不,您需要知道要查找的信标的UUID。 iOS无法扫描“所有信标”。

标识符字符串只是您要分配给应用程序中的CLBeaconRegion的字符串。 它与实际信标中配置的任何值均无关。

所以

let beaconRegion:CLBeaconRegion = CLBeaconRegion(proximityUUID: beaconUUID as UUID, identifier: "someIdentifier")

let beaconRegion:CLBeaconRegion = CLBeaconRegion(proximityUUID: beaconUUID as UUID, identifier: "someOtherIdentifier")

都将扫描同一组iBeacon; 具有beaconUUID指定的UUID的beaconUUID

您可以在以后使用标识符来标识信标区域,例如在输入区域时或要停止监视区域时。 请记住,信标区域在您的应用程序执行期间保持活动状态,因此您不能依赖对象引用。

因此,问题在于每个信标都需要具有唯一的标识符字符串。 这就是为什么我的应用程序没有检测到的原因,因为我对所有信标都有一个通用字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM