Взаимодействие пользователей с событиями Screen-Off с маяками

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

В данном случае использования мы предполагаем, что конечный пользователь будет находиться в постоянном движении.

До сих пор мы тестировали два разных подхода.

  • Kontakt SDK/Android Beacon Library для постоянного поиска маяков. Используя UUID (при условии, что мы используем Eddystone), мы можем связать его с кэшированным сообщением, которое мы получили для нашего бэкэнда. Однако это в конечном итоге съедает много батареи.
  • У Сообщения поблизости/Опознание поблизости у этого был потенциал, поскольку у него есть панель инструментов маяка, позволяющая легко настраивать вложения для каждого маяка, и он имеет «одинаковую» реализацию как на iOS, так и на Android. Однако, прочитав документацию и проведя многочисленные тесты, мы не смогли получить вложения маяка, если у нас был выключен экран. Единственный возможный способ состоял в том, чтобы пользователь оставался неподвижным перед маяком в течение 3 минут (в зависимости от настроек смартфона и энергии), и это противоречит нашему предположению, что пользователь находится в постоянном движении, поэтому сканирование может быть запущено. когда пользователь не находится рядом с маяком.

Кроме того: при использовании Сообщения с окружением на iOS мы добились желаемого поведения: приложение обнаруживало маяки при использовании Сообщения с окружением, если и приложение, и API был настроен для использования в фоновом режиме.

Таким образом, мы просим:

  • Есть ли способ использовать Nearby API с событиями отключения экрана? Например, постоянно планировать сканирование?
  • Какие еще у нас есть альтернативы, которые можно использовать кроссплатформенно между iOS и Android? (чтобы мы могли попытаться обеспечить одинаковое поведение между платформами)

РЕДАКТИРОВАТЬ: после дальнейшего прочтения мы пришли к выводу, что сканирование маяка BLE оказывает минимальное влияние на батарею при правильном использовании (акцент на правильном, нам придется изменить эвристику на нашей стороне), см. : это. Тогда остается вопрос: почему мы не можем иметь фоновое сканирование в ближайшем API без сообщений поблизости собственных уведомлений, чтобы мы могли утверждать, что пользователь прошел рядом с маяком? Что нас заинтриговало, так это то, что это прекрасно работает на iOS...


person Vanethos    schedule 06.12.2017    source источник


Ответы (1)


Nearby API сканирует по расписанию по своему выбору, включая экран при событиях. У вас нет гибкости в настройке правил сканирования поблизости для вашего приложения, так как оно разработано как служба, работающая для всех приложений на телефоне. При использовании функции «Поблизости» вы должны принять это ограничение.

Библиотека Android Beacon имеет открытый исходный код и позволяет гибко настраивать время сканирования. Если вы обнаружите, что ваша конфигурация потребляет слишком много заряда батареи для вашего варианта использования, вы можете изменить это. Настройки по умолчанию были разработаны для хорошего компромисса между энергопотреблением и быстрым обнаружением, поэтому мы рекомендуем именно их. Если вы обнаружите, что настройки по умолчанию вам не подходят, вы можете настроить их разными способами. Самый простой способ — настроить параметры scanPeriod и betweenScanPeriod для фона. Но есть много других способов настроить его поведение при сканировании.

Однако вы должны отметить, что «постоянное планирование сканирования» (как упоминалось в вашем вопросе) будет потреблять много энергии в режиме с низкой задержкой. Библиотека Android Beacon по умолчанию выполняет постоянное сканирование в режиме низкого энергопотребления, когда приложение работает в фоновом режиме и вокруг нет маяков. На большинстве устройств это обеспечивает обнаружение в течение 5 секунд и разумное энергопотребление, аналогичное режиму ожидания соты.

Трудно предложить больше предложений, не зная конфигурации, которую вы использовали с библиотекой Android Beacon, условий тестирования и наблюдаемого энергопотребления. Если вы можете предоставить эту информацию, я мог бы помочь больше.

Полное раскрытие: я ведущий разработчик проекта с открытым исходным кодом Android Beacon Library.

person davidgyoung    schedule 06.12.2017
comment
Сначала я должен поблагодарить вас за ваш быстрый ответ. Изменение настроек в библиотеке Android Beacon может быть хорошим способом решить проблему, однако мы теряем преимущества панели инструментов Google Beacon. В iOS у нас были результаты, которые мы хотели, и поэтому мы должны спросить: почему API, созданный Google, лучше работает на iOS? Должно быть запланировано какое-то задание в фоновом режиме, когда экран выключен, так почему же такое поведение недоступно на собственной платформе Google, Android? И наконец, возможно ли использовать Google Beacon Dashboard параллельно с вашей библиотекой? - person Vanethos; 06.12.2017
comment
На самом деле я очень удивлен, узнав, что вы видите лучшие результаты на iOS — по моему опыту, они намного хуже. У Google нет специального доступа к iOS API, поэтому Nearby SDK должен полагаться на сканирование CoreBluetooth, как и все мы. А в CoreBluetooth обнаружение рекламы услуг в фоновом режиме обычно происходит медленно для таких рекламных объявлений, как Eddystone. Это может занять минуту или больше, поэтому пользователи в движении часто пропускают рекламу, проходя мимо. Было бы больше шансов получить лучшие результаты на iOS при использовании iBeacon, поскольку их платформа и API CoreLocation оптимизированы для iBeacon. - person davidgyoung; 06.12.2017
comment
@davigyoung, к сожалению, у меня те же проблемы, о которых сообщил Vanethos. Поскольку Google не может контролировать iOS, ему приходится использовать CoreBluetooth вместо событий включения экрана, что, на мой взгляд, ужасно влияет на взаимодействие с пользователем. Позвольте мне объяснить мой вариант использования: у меня есть 10xbeacons (Eddystone) на прямом пути длиной 100 м, на расстоянии 10 м друг от друга. С обоими телефонами в кармане я иду/бегаю по ним и в итоге, когда я включаю айфон у меня 10 контрольных точек (вероятность успеха 90%). Когда я включаю Android, у меня обнаруживается только 1 маяк, последний. К сожалению, в этом случае iPhone выигрывает. - person GuilhE; 07.12.2017