Как зарегистрировать время, когда пользователь находится в диапазоне ibeacon

Я разрабатываю приложение ibeacon на swift, и я хотел бы записать минуты, которые каждый клиент / пользователь тратит в пределах диапазона маяка. Буду очень признателен за любые предложения.

1 ответ

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

Типичная реализация отправляет на сервер следующие поля:

event ("appear" or "disappear")
uuid
major 
minor
device_id (you can generate a new unique identifier on app install)

Когда вы совершаете звонки через веб-сервис? Есть два ответа. Простой и сложный:

Комплексный ответ

Что усложняет этот ответ, так это тот факт, что приложения для iOS обычно отслеживают маяки, используя подстановочный знак CLBeaconRegion что оставляет некоторые идентификаторы ноль. При мониторинге маяков с таким регионом вы фактически не знаете, какие маяки появляются и исчезают - вы просто знаете, когда появляется один из маяков, и когда исчезают все маяки в той же группе.

Чтобы отслеживать отдельные маяки со всеми их идентификаторами, необходимо использовать API-интерфейсы ранжирования, которые каждую секунду обновляют видимость маяка. Но ранжирование работает только на переднем плане (и в фоновом режиме в течение 5 секунд после того, как первый маяк в регионе появляется или все исчезает), поэтому, когда ваше приложение переходит на фон, оно теряет доступ к детальной информации о том, какие именно маяки видимый.

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

Простой ответ

Если у вас есть менее 20 маяков для отслеживания, это становится намного проще, потому что вы можете определить один CLBeaconRegion для каждого маяка, и контролировать их все отдельно. (iOS только позволяет определить 20 CLBeaconRegions на приложение.) Затем вы можете просто отправлять события появления / исчезновения на сервер для каждого из них. С помощью этой техники вы помещаете вызовы веб-службы в didEnterRegion а также didExitRegion Обратные вызовы.

Другие вопросы по тегам