iBeacon — как определить время, которое пользователь проводит в комнате или отделе?

#position #distance #ibeacon #indoor-positioning-system

#позиция #расстояние #ibeacon #система позиционирования в помещении

Вопрос:

У меня есть приложение, которое отслеживает или ранжирует iBeacons внутри здания. Как я могу определить, сколько времени пользователь проводит в определенной комнате?

Я заметил, что близость для данного маяка может меняться от ближнего к дальнему, в зависимости от ориентации устройства. Это означает, что я не могу просто сказать, что, как только диапазон неизвестен, посещение завершено. Должен ли я постоянно определять расстояние до маяка и считать, что посещение начинается / заканчивается, как только я обнаружу X последовательных состояний «близко / неизвестно» для данного маяка?

Ответ №1:

Нет никакой гарантии, что вы получите любое количество обратных вызовов с указанием близости «неизвестно», прежде чем маяк исчезнет. Вместо этого вы должны использовать API мониторинга и считать, что комната закрыта, когда вы получаете вызов didExitRegion . Иногда iOS выдает ложное уведомление о выходе, поэтому вам нужно защититься от этого. Я делаю это, запуская таймер при выходе из региона, и я выполняю логику выхода только в том случае, если я не получаю didEnterRegion обратного вызова в течение пяти секунд.

Конечно, все это предполагает, что в «комнате» или «отделе» есть маяки, диапазон передатчиков которых заканчивается точно на краю комнаты / отдела. Без очень точного размещения и контроля над мощностью передатчика это вряд ли будет точно верно. Вы должны решить, сможете ли вы жить с таким приближением.

Комментарии:

1. Я не уверен, что мониторинг региона будет работать для комнат с перекрывающимися сигналами маяка — это как один большой регион, и нет гарантии, что пользователь когда-либо выйдет из него. Чтобы различать маяки в таком случае, мне пришлось бы создать отдельные UUID для маяков и зарегистрироваться для прослушивания дюжины разных регионов.

2. @AlexStone, полностью согласен с тем, что для каждой комнаты / отдела понадобятся разные регионы.