iOS是否表示区域是否已停用?

时间:2015-03-22 01:13:48

标签: ios ibeacon regions

我正在研究iOS beacon应用程序并且遇到了一个有关规范。根据我的理解,在iOS 8+中一次最多可以启用/定义20个区域(总计 - 不是每个应用程序)。阅读之后会出现一些问题。

  1. 信标区域是否与GPS /地理围栏区域不同,还是它们都被认为是相同的?它们都算是最大的20个区域吗?
  2. 如果某个设备在不同的应用中定义了超过20个区域,那么如何知道他们的区域是否正在被监控?
  3. 如果区域被停用/替换为与竞争应用不同的区域,是否会在停用该区域之前向该应用发送通知?
  4. 如果区域被其他应用推出后,如何重新激活该区域?
  5. 根据我所读到的,在涉及区域时没有“优先”级别,也没有任何东西可以指示哪些区域应该是活动的。它最近是基于哪些应用程序被访问/带到前台的?

2 个答案:

答案 0 :(得分:2)

以下答案的斜体部分是来自Apple文档的直接引用,以及相关页面的链接。

  

信标区域是否与GPS /地理围栏区域不同,还是它们都被认为是相同的?它们都计入最大的20个区域吗?

The region monitoring service operates independently of any location services in use by your app, and you may use it in conjunction with any of the other services.来自“CLLocationManager类参考。”

  

如果某个设备在不同的应用中定义了超过20个区域,那么如何知道他们的区域是否正在被监控?

Be judicious when specifying the set of regions to monitor. Regions are a shared system resource, and the total number of regions available systemwide is limited. For this reason, Core Location limits to 20 the number of regions that may be simultaneously monitored by a single app. To work around this limit, consider registering only those regions in the user’s immediate vicinity....(重点已添加)请参阅位置和地图编程指南中的“区域监控和iBeacon”了解更多信息。

由于每个应用限制为20个地区,因此系统实际上能够监控的不仅仅是这个。考虑到上述建议,您似乎不太可能需要同时监控近20个地区的任何地方。

  

如果某个区域已停用/替换为与竞争应用不同的区域,是否会在停用该区域之前向该应用发送通知?

If you attempt to register a region and space is unavailable, the location manager calls the locationManager:monitoringDidFailForRegion:withError: method of its delegate with the kCLErrorRegionMonitoringFailure error code.请参阅位置和地图编程指南中的“区域监控和iBeacon”了解更多信息。

在删除区域之前,区域不会停用,但如果没有空间,则可能无法添加区域。在这种情况下,您会收到报价中所述的错误。

  

如果区域被其他应用推出后,如何重新激活该区域?

见上文。这不是先进先出的安排,但更像是音乐椅。如果没有空间,则无法首先添加您的区域。

答案 1 :(得分:1)

好消息!限制是每个应用程序,而不是每个设备。因此,很容易跟踪您正在监控的应用程序内部。

我不确定你在哪里阅读。如果您发布源代码,我们可以尝试进行更正或澄清。

应该注意的是,即使限制是每个应用程序,iOS设备中的蓝牙硬件辅助过滤器肯定有限制。目前还不清楚在硬件辅助达到极限并且检测速度变慢之前,设备上所有应用程序可以监控多少个区域。