Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 基于UUID监视iBeacon区域时,何时收到通知?_Ios_Ibeacon - Fatal编程技术网

Ios 基于UUID监视iBeacon区域时,何时收到通知?

Ios 基于UUID监视iBeacon区域时,何时收到通知?,ios,ibeacon,Ios,Ibeacon,我想构建一个即使在后台,当它进入任何具有给定UUID的iBeacon的范围时也会得到通知的对象 我知道我可以为每个信标监控一个单独的区域,但如果我理解正确,在iOS上,我只能监控20个区域 因此,另一种替代方法是仅基于其UUID监视区域,但何时才能获得该区域的进入/退出通知?无论何时我进入或超出具有相同UUID的任何信标的范围,或仅当我进入第一个信标的范围并超出最后一个信标的范围时?如果您基于仅包含ProximityUID的通配符区域进行监视,且主信标和次信标均为零,则: 第一次检测到第一个信标

我想构建一个即使在后台,当它进入任何具有给定UUID的iBeacon的范围时也会得到通知的对象

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


因此,另一种替代方法是仅基于其UUID监视区域,但何时才能获得该区域的进入/退出通知?无论何时我进入或超出具有相同UUID的任何信标的范围,或仅当我进入第一个信标的范围并超出最后一个信标的范围时?

如果您基于仅包含ProximityUID的通配符区域进行监视,且主信标和次信标均为零,则:

第一次检测到第一个信标时,您将只收到一次DiCenter回调。如果检测到第二个、第三个或其他信标与此通配符区域匹配,则您没有收到任何监视回调

在所有与通配符区域匹配的信标消失之前,您不会得到任何进一步的回调。这在前台至少需要30秒,在后台则需要更长的时间。到那时,你会接到一个叫didExit的电话。收到didExit后,您将再次符合上述1中的回调条件

如果您想要对单个信标进行更精细的回调,有几种选择:

使用最多20个允许的附加区域定义,并对所有区域进行监视

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

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


非常感谢davidyoung的澄清。但是测距API只在前台工作,对吗?不管怎样,我刚刚发现了一篇文章,其中解释了如何在真正有意义的情况下进行测距: