Как зарегистрировать время, когда пользователь находится в диапазоне 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 CLBeaconRegion
s на приложение.) Затем вы можете просто отправлять события появления / исчезновения на сервер для каждого из них. С помощью этой техники вы помещаете вызовы веб-службы в didEnterRegion
а также didExitRegion
Обратные вызовы.