关于ios:Estimote信标无法按预期在Iphone上运行

Estimote beacons not working on Iphone as expected

我们的带有Estimote信标的目标:我们计划在高尔夫球场中设置Estimote信标。我们的场景是,只要玩家到达洞口,比赛的节奏是多少,信标都应该检测到


从问题描述中,您遇到的核心问题是后台监视回调中的行为不一致。

从理论上讲,您应该能够获得一个监控回调,该回调在每次启动信标时都会在后台唤醒您的应用程序,并使其在后台运行10秒(如果使用此技术,则可以延长到3分钟)。第一次在监视区域中检测到,或者每次在监视区域中停止检测到所有信标时。这将触发didEnterRegiondidExitRegion回调。

如您所见,有时这些回调不会在预期时出现。这样做的主要原因有两个:

  • 由于区域状态未更改,因此没有进入或退出回调。当iOS认为它始终位于CLBeacon区域内时,通常会发生这种情况,而应用程序测试人员将iOS设备从信标附近短暂移除(通过移动电话或关闭信标),然后将其返回到该区域。在这种情况下,无法获得退出/进入序列通常是由于没有给iOS足够的时间来检测它已退出该区域而引起的。在后台,此过程最多可能需要15分钟。在大多数情况下,这纯粹是一个测试问题,而不是您的实际用户会遇到的问题-测试人员承受着完成测试的时间压力,因此在这些测试用例中,他们往往等待的时间不够长。添加日志记录,通知或其他有关区域退出发生时间的见解可以帮助您的测试人员确保他们等待足够长的时间。

  • 由于所有硬件加速插槽都已装满,因此您不会快速收到条目回调。为了检测信标并在一两秒钟内发送didEnterRegion回调,iOS在检测到感兴趣的信标时依靠蓝牙硬件过滤器唤醒操作系统。问题在于这些硬件过滤器是一种稀缺资源,如果首先安装在手机上的其他应用程序用尽了这些硬件过滤器,则您的应用程序将无法访问它们,这意味着检测时间将落到软件扫描上,最多可能需要15分钟。没有办法知道您的应用程序已被授予访问这些硬件筛选器的权限,甚至在手机上卸载并重新安装应用程序也可能会更改此设置是否正确,从而导致结果不一致。可用过滤器的数量尚未记录,但有证据表明该数量为30,这意味着只有在电话上监视的前30个CLBeaconRegions才具有优先访问权。

  • 为了解决测试中的问题2,请卸载您认为可能正在监视信标的其他所有应用程序,然后重新安装您的应用程序。然后,您应该获得更加一致的结果。

    当然,您不能让真实用户卸载其他信标应用程序,因此他们仍然可能会遇到这些问题。但是好消息是,大多数普通用户的手机上不会有很多信标应用程序,因此,实际用户比手机上经常有很多信标应用程序的开发人员或测试人员发生这种情况的可能性要小得多。 。