为什么Android可以比iOS更多的信标区域?

时间:2016-03-11 13:37:33

标签: android monitoring ibeacon scanning beacon

根据Radius Network [1]的测试,iOS设备在监控模式下最多只能检测30个信标区域。但是为什么在Android上仍然可以定义(almoast)无限数量的信标区域?

感谢您的澄清。

[1] http://developer.radiusnetworks.com/2015/04/21/max-beacon-regions-ios.html

2 个答案:

答案 0 :(得分:2)

澄清一下,iOS上实际上有两个限制:

  • 每个iOS应用都可以监控最多20个定义的CLBeaconRegion。此限制是每个应用最多20个地理围栏的延迟。由于Apple扩展了相同的API,因此CLRegion对象是一个CLBeaconRegion对象,因此每个应用的限制为CLRegion秒。特定类型的<?php namespace HIT\Huskytheme\ViewHelpers\Page; class LanguageMenuViewHelper extends \FluidTYPO3\Vhs\ViewHelpers\Page\LanguageMenuViewHelper { protected function getLanguageUrl($uid) { $excludedVars = trim((string) $this->arguments['excludeQueryVars']); $config = array( 'parameter' => $this->getPageUid(), 'returnLast' => 'url', 'additionalParams' => '&L=' . $uid, 'useCacheHash' => $this->arguments['useCHash'], 'addQueryString' => true, 'addQueryString.' => array( 'method' => 'GET', 'exclude' => 'id,L,cHash' . ($excludedVars ? ',' . $excludedVars : '') ) ); if (TRUE === is_array($this->arguments['configuration'])) { $config = $this->mergeArrays($config, $this->arguments['configuration']); } return $this->cObj->typoLink('', $config); } } 。可能还有其他原因导致Apple决定对信标保持同样的限制,但这就是它的起源。

  • 在设备上注册的前30个CLBeaconRegions(跨所有应用)都会加速检测。这是因为蓝牙芯片的硬件插槽有限,可用于BLE数据包的硬件匹配。如果采用所有这些插槽,则检测将回退到定期软件扫描,这种扫描速度较慢。

在Android上,这些确切的限制不适用,但确实存在其他限制。以下限制适用于Android Beacon Library:

  • 您可以监控的区域数量没有限制。但是,由于匹配最终是在软件中完成的,因此监控极端数量的区域(数百或数千)将会变慢关闭你的应用程序,可能会导致性能问题。

  • 硬件加速过滤器仅适用于Android 5.0+(如果在手机硬件上可用)。它们应用于信标类型,而不是特定的信标区域。因此,虽然对加速硬件检测没有区域限制,但如果同时可以看到多个信标,则您的应用只会加速检测到第一个可见的信标。随后的检测将回归到较慢的定期软件扫描,就像在iOS上一样,直到所有信标都消失。

答案 1 :(得分:1)

它实际上是iOS可以监控的20个Beacon区域,它只是Apple向CoreLocation框架引入的限制。

没有官方解释原因,但我的猜测是,Apple并不希望开发人员监控大量/无限数量的区域,以避免滥用该功能并对其产生负面影响。设备的电池寿命。