进入区域后查找特定的iBeacon(背景模式)

时间:2013-12-05 17:09:02

标签: ios objective-c ios7 bluetooth-lowenergy ibeacon

这个问题是关于应用程序何时在后台运行 我得到了一个适用于2个iBeacons的应用程序(相同的UUID,相同的主要,不同的小调)。

第一个iBeacon(小调1)例如是门。当应用程序在后台时,我会收到进入该区域的通知。这很好用。现在,例如,我走进商店,在某个点是第二个iBeacon(小调2)。 如果我在第二个iBeacon的紧邻区域,应用程序应该发出通知。 (“嘿,你在现金点”)。 但我读到,当Applikation处于背景中时,这是不可能的。它只在我按下肩部按钮或主页按钮时才有效。 http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

所以问题:任何人都可以给我一个提示如何实现这个用例。

1 个答案:

答案 0 :(得分:14)

有几件事:

创建信标区域时,您可以仅匹配UUID,UUID和主要值,或UUID,主要和次要值。

如果仅指定UUID,则您的信标输入/退出通知将不包含主要/次要值信息。

同样,如果您创建一个具有UUID且主要但不是次要值的区域,您的信标输入/退出消息将包括信标的UUID和主要值,但不包括次要值。

最简单的方法是为您要跟踪的触及唯一信标创建一个单独的区域。然后,您将为每个信标获得单独的进入/退出通知。

如果您希望多个信标属于同一区域,但报告不同的主要或主要/次要值,则必须打开信标范围并等待测距呼叫。在测距调用中,您将获得与当前区域匹配的所有信标的信标对象数组(不是信标区域对象,CLBeacon对象)。信标对象将包括该信标的实际UUID,主要和次要。

如果您在后台并且同时打开了信标监控和范围,您将获得didEnterRegion消息(或者可能是更改的状态消息),然后是几秒的测距信息,然后您的应用将返回到睡眠。

当您的应用在后台时,您唯一真正的选择是显示本地通知,并希望用户再次唤醒您的应用。如果用户滑动该通知,系统会在需要时提示用户提供解锁凭据,然后将用户带回您的应用程序。