iBeacon可靠/不可靠

时间:2014-04-18 02:49:01

标签: iphone objective-c cllocationmanager ibeacon

我正在开发我的家庭自动化应用程序。我正在使用estimotes iBeacons,我想要做的就是让我的家庭自动化控制能够知道我在家里的距离。每个iBeacon在我的家庭控制器上都有一个虚拟开关,当我接触到iBeacon时,我的设备在前台或后台将更新我的控制器以打开我的开关,当我靠近灯塔时关闭它然后当我有想远离我的灯塔。所有这一切都很完美,我很喜欢它,但是我的一些条件依赖于我在一段时间内接近,而我注意到的是几分钟后甚至在接近半小时后一个信标,iPhone 5s基本上断开它的连接,然后将其重新启动,导致它执行退出(关闭我的虚拟交换机),然后立即执行输入(转回虚拟交换机)。你可以想象这对于妻子和我自己来说非常烦人,因为退出/进入,卧室的灯开始闪烁。我已经阅读过有关此问题的人,并尝试了我在互联网上看到的一切无济于事。

我注意到,每当为iBeacon划过监视器交叉时,都会调用didDetermineState和相应的Enter / Exit回调函数。我该怎么办才能让它停止发生?如果需要,我可以提供代码示例,但这更像是一个普遍的问题。

2 个答案:

答案 0 :(得分:5)

这是iBeacons(以及像我们这样的极客的妻子)的常见问题,简单的解决方案是软件过滤器。您必须忽略仅持续几秒钟的区域退出事件,直到您确认没有后续的进入事件。

您可以通过创建跟踪这些事件的变量(例如justExitedRegion)来完成此操作。当您收到退出区域通知时,请设置justExitedRegion = YES并启动五秒计时器。当计时器熄灭时,如果justExitedRegion == YES,则正常执行退出逻辑并设置justExitedRegion = NO。否则跳过处理退出逻辑。

同时,如果您收到条目通知并且justExitedRegion == YES,请将justExitedRegion设置为NO并跳过您的输入处理。

答案 1 :(得分:0)

如果您只想知道自己是否在家中,可以在手机上启动GPS并检查您的位置。

假设您的iPhone在家中有一个定期看到的无线网络,即使在没有GPS信号的房子内,地理定位也能很好地工作。它将不知道wifi基站的纬度/经度,并将其作为您当前的位置。

因此,请使用iBeacon作为主要位置检测,但要验证使用GPS为您提供的数据。

此外,您应该联系Estimote以确保您没有故障单元或其他东西。这是一个非常新的硬件,可能存在问题。