使用 iBeacons 执行 eguewithidentifier

Posted

技术标签:

【中文标题】使用 iBeacons 执行 eguewithidentifier【英文标题】:performseguewithidentifier with iBeacons 【发布时间】:2016-07-21 16:06:41 【问题描述】:

我正在尝试使用 Estimote Beacons 构建一个演示应用程序。我希望应用程序在用户靠近信标时打开特定的视图控制器。我使用 performeguewithidentifier 但当应用程序启动时仅打开代表范围内的第一个信标的第一个视图控制器,当我靠近其他信标时它不会打开其他的。它以某种方式停止了对其他信标的测距。 下面是我用来定位信标的代码:

func beaconManager(manager: AnyObject, didRangeBeacons beacons: [CLBeacon],
                       inRegion region: CLBeaconRegion) 



        let knownBeacons = beacons.filter $0.proximity != CLProximity.Unknown

        if (knownBeacons.count > 0) 

            let closestBeacon = knownBeacons [0] as CLBeacon







            if(closestBeacon.minor.integerValue==50557)
                performSegueWithIdentifier("VC1", sender: nil)
            

            else if(closestBeacon.minor.integerValue==37890)
                performSegueWithIdentifier("VC2", sender: nil)

            

            else if(closestBeacon.minor.integerValue==18976)
                performSegueWithIdentifier("VC3", sender: nil)
            





            else 


                self.view.backgroundColor = UIColor.brownColor()
            

【问题讨论】:

代码显示在appDelegate中吗?命名的 segue 是否仅与单个 viewController 相关联?你确定他们被发现了吗? if 会设置断点或添加 NSLog 语句以查看 if 语句的哪个分支正在执行。 @davidgyoung 不,代码在主视图控制器中,每个 segue 都与特定的视图控制器(不是一个)相关联,是的,它们正在被发现。取决于我在哪个信标附近启动应用程序,它只显示一个,当我靠近另一个信标时,它不会“触发”另一个 segue。但是,当我关闭应用程序并靠近另一个信标时,它会打开它。但我希望 segues 在我靠近该信标时自动呈现相关的视图控制器(具有给定的次要值) 【参考方案1】:

我没有使用 Estimote 的自定义库,但我认为它与位置管理器的相似。

在核心位置管理器中,如果您的应用在后台,当您第一次进入新的信标区域时,您会收到输入区域通知,然后您只会获得几秒钟的测距信息。

如果您为您的区域设置了唯一的 UUID 和主要 ID 但没有次要 ID,则具有该 UUID 和主要 ID 的所有信标都被视为同一区域的一部分,您将无法可靠地收到测距通知,因为具有不同次要 ID 的信标成为最近的信标。

如果您想同时处理范围内的多个信标并区分它们,您需要为每个信标的 UUID、主要 ID 次要 ID 创建单独的信标区域。

我不知道这是否是您面临的问题,但可能是。

【讨论】:

不,那不是问题。当我靠近带有相关次要值的信标时,我只想让 segues 显示相关的视图控制器。但是,它只显示范围内的第一个,当我靠近另一个信标时,它不会更改为另一个。它以某种方式停止了对其他信标的测距。也许还有另一种编写上面代码的方法。也许我错过了smthng ...?

以上是关于使用 iBeacons 执行 eguewithidentifier的主要内容,如果未能解决你的问题,请参考以下文章

使用 didEnterRegion 唤醒一个被杀死的应用程序,然后扫描 iBeacon

如何检查用户的设备是不是支持和授权 iBeacon 使用以及是不是开启了蓝牙?

Passbook 无法识别 iBeacon

用于 android 的 RadiusNetworks iBeacon 库:校准

ibeacons 和地理围栏结合 swift

从 Appdelegate 设置 iBeacon 操作和监控