Почему Android может охватывать больше областей маяка, чем iOS?

Согласно тесту Radius Network [1], устройства iOS могут обнаруживать только до 30 областей маяков в режиме мониторинга. Но почему на Android все еще возможно определить (почти) бесконечное количество областей-маяков?

Спасибо за разъяснение.

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


person user5909523    schedule 11.03.2016    source источник


Ответы (2)


Чтобы уточнить, на iOS на самом деле есть два ограничения:

  • Каждое приложение iOS может отслеживать не более 20 определенных CLBeaconRegions. Это ограничение является пережитком максимум 20 геозон на приложение. Поскольку Apple расширила те же API, ограничение в 20 CLRegionс на приложение было унаследовано маяками, поскольку объект CLBeaconRegion является особым типом CLRegion. Вероятно, есть и другие причины, по которым Apple решила сохранить то же самое ограничение с маяками, но именно здесь оно возникло.

  • Первые 30 CLBeaconRegions, зарегистрированных на устройстве (во всех приложениях), получают ускоренное обнаружение. Это связано с тем, что чипы Bluetooth имеют ограниченные аппаратные слоты для аппаратного сопоставления пакетов BLE. Если все эти слоты заняты, обнаружение возвращается к периодическому сканированию программного обеспечения, которое выполняется медленнее.

На Android эти точные ограничения не применяются, но существуют другие ограничения. К библиотеке Android Beacon применяются следующие ограничения:

  • Нет ограничений на количество регионов, которые вы можете отслеживать. Однако, поскольку сопоставление в конечном счете выполняется в программном обеспечении, мониторинг чрезмерного количества регионов (многие сотни или тысячи) замедлит работу вашего приложения и может вызвать проблемы с производительностью.

  • Фильтры аппаратного ускорения работают только на Android 5.0+ (если доступно на аппаратном обеспечении телефона). Они применяются к типу маяка, а не к конкретной области маяка. Таким образом, несмотря на то, что нет региональных ограничений для ускоренного обнаружения оборудования, если несколько маяков видны одновременно, ваше приложение получает ускоренное обнаружение только для первого маяка, который становится видимым. Последующие обнаружения возвращаются к более медленному периодическому сканированию программного обеспечения, как в iOS, до тех пор, пока все маяки не исчезнут.

person davidgyoung    schedule 14.03.2016

На самом деле iOS может отслеживать 20 областей Beacon, и это просто ограничение, введенное Apple для платформы CoreLocation.

Официального объяснения причины нет, но я предполагаю, что Apple не хочет, чтобы разработчики отслеживали большое/бесконечное количество регионов, чтобы избежать злоупотребления этой функцией и негативного влияния на время автономной работы устройства.

person Luciano LB    schedule 13.03.2016