根据UUID监视iBeacon区域时,何时收到通知?

时间:2019-08-21 15:47:36

标签: ios ibeacon

我想构建一个当它进入具有给定UUID的任何iBeacon范围内时都会得到通知(即使在后台)的通知。

我知道我可以监视每个信标的单个区域,但是如果我理解正确,在iOS上,我只能监视20个区域。

因此,另一种选择是仅基于其UUID来监视区域,但是什么时候可以获取该区域的进入/退出通知?每当我进入或超出具有相同UUID的任何信标的范围时,还是仅当我进入第一个信标的范围而超过最后一个信标的范围时?

1 个答案:

答案 0 :(得分:1)

如果您基于仅包含ProximityUUID(不包含主要和次要nil)的通配符区域进行监视,则:

  1. 第一次检测到第一个信标时,您只会得到一个 didEnter回调。如果检测到与该通配符区域匹配的第二个,第三个或其他信标,则您没有得到任何监视回调。

  2. 在与通配符区域匹配的 all 个信标消失之前,您将不会得到任何进一步的回调(这至少需要花费30秒的时间,在前台花费的时间更长)。您会接到didExit的电话。收到didExit后,您将可以再次使用上面的(1)中的回调。

如果您想对各个信标进行更细粒度的回调,可以选择以下几种方式:

  1. 使用其他区域定义(最多允许20个)并监视所有区域。

  2. 在获得didEnter时动态更改您正在监视的区域。如果您与特定的通配符区域匹配的信标数量有限(例如,少于20个),这可能会起作用。然后,您可以为每个子区域激活监视。

  3. 使用范围API。这些每秒给您回调一次,其中列出了与某个区域匹配的所有匹配信标的列表。诀窍在于,通常将其限制为背景区域过渡后的10秒。但是可以根据要求将其延长到180秒,或者如果您在Info.plist中声明您的应用程序为后台位置应用程序,则可以将其无限期延长。 (如果走这条路,有一些技巧可以使它正常工作。)