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

Car*_*ten 6 objective-c ios bluetooth-lowenergy ios7 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

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

Dun*_*n C 14

几件事:

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

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

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

最简单的方法是创建一个单独的区域,以便跟踪您正在跟踪的唯一信标.然后,您将为每个信标获得单独的进入/退出通知.

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

如果您在后台并且同时打开了信标监控和范围,您将获得didEnterRegion消息(或者可能是更改的状态消息),然后是几秒的测距信息,然后您的应用程序将重新进入休眠状态.

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

  • 好答案.我要补充的一点是,当你收到监控通知时,你会在首次检测到iBeacon(最远50米)并且不是基于任何特定的接近度时得到它.你无法控制这一点.如果你真的需要在你"处于第二个iBeacon的直接区域"时给用户一个背景通知,那你就不走运了.基于特定接近度采取行动的唯一方法是在前景中进行测距.正如Duncan所提到的,背景范围仅持续几秒钟 - 不足以让距离发生重大变化. (4认同)