对于特定的商业案例,我想通过利用iBeacon技术触发基于邻近度的通知(推送或UILocalNotification)。 这是为了在应用程序处于后台/锁屏时工作。
我有一些特定的限制:
产品必须在一定程度上扩展,因此不可能在20个区域范围内扩展。我们将只使用一个UUID(如果我们开发新的功能集,可能只有2或3个,但我们不会为每个物理信标注册一个区域)
我们将使用major和minor来调用webservices
对此,我知道我将不得不使用以下方法:首先是didEnterRegion:没有关于major / minor / distance的先验信息,然后是didRangeBeacon:执行更高级的操作。 考虑到信标的快速波束率,我已经使用本地存储机制来超时信标。
*主要限制因素:我们必须区分有关信标距离的事件(例如,如果CLProximityImmediate只触发通知)
现在我看到一个主要的限制。因为我的应用程序在进入某个区域后只会在背景中显示几秒钟,如果我有基于距离/距离的约束,则应用程序很可能会:
对于这种情况,您有什么想法/解决方法吗?
答案 0 :(得分:3)
对于此用例中适用的限制CoreLocation
,您完全正确。如果您按照描述进行设置,典型的行为将是应用程序将在未知距离(通常最大范围约为50米)的背景中检测到信标,在背景中的范围约为5秒,然后应用程序将被iOS暂停。这五秒的测距时间通常不足以让用户靠近信标触发您的用例。
不幸的是,标准信标没有简单的解决方法,CoreLocation.
CLBeaconRegion
个对象没有CLCircularRegion
对地理围栏这样的距离字段。
您可以尝试两种极端方法:
一旦检测到设备太远,请立即关闭对您所在地区的监控,然后在应用程序暂停在applicationWillResignActive:
回调中时重新启用它。您可能会获得新的参赛活动和更多背景测距时间。
使用非标准信标,定期停止传输以触发强制退出/进入事件。