2016-02-17 6 views
4

Я ищу помощь в понимании некоторых проблем надежности iBeacon, которые я наблюдал при мониторинге iBeacons с использованием CoreLocation.iBeacon Monitoring Reliability

У меня есть набор маяков с тем же UUID, но разные основные и второстепенные номера. Моя программа настроена для мониторинга всех из них (не диапазона). У меня есть мощность передачи на абсолютном минимуме для маяков (предположительно в результате радиус радиуса 5 футов). Иногда это работает, но я заметил некоторые непоследовательное поведение, включая:

  • Прогулка до маяка и никогда не получающий событие входа (даже когда стоящего рядом с ним в течение нескольких минут)
  • Принимающий ввести события издалека маяки (когда уже внутри другой области и не двигается)
  • перемежающегося выхода/входа события сидя внутри области радиомаяк (это, кажется, общее от чтения других сообщений)

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

Моя цель - иметь несколько маяков в непосредственной близости. Должен ли я рассматривать диапазон, чтобы помочь снизить некоторую надежность? Если это так, я понимаю, что вы не можете обладать надежностью в фоновом режиме.

Кроме того, я пытаюсь подтвердить, будет ли вы получать или вводить событие, если ваше приложение начинает уже внутри области маяка?

ответ

1

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

Альтернатива заключается в том, чтобы максимизировать мощность передатчика маяка и полагаться на маяковый радиосигнал в диапазоне, чтобы отфильтровать маяки, которые находятся далеко от предполагаемого расстояния или уровня сырого сигнала (RSSI). Это будет, как правило, более надежным, потому что более сильные передачи имеют более высокие отношения сигнал/шум и менее восприимчивы к радиошумам и другим изменениям окружающей среды.

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

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

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

+0

Спасибо за ответ - как вы динамически запрашиваете статус входа в регион? – mattnedrich

+0

Вы можете вызвать 'locationManager.requestStateForRegion (region)', который инициирует обратный вызов 'locationManager (менеджер: CLLocationManager, didDetermineState state: CLRegionState, forRegion region: CLRegion)' с состоянием входа/выхода для пройденного региона. – davidgyoung

+0

Вы можете вызвать 'locationManager.requestStateForRegion (region)', который вызывает обратный вызов 'locationManager (менеджер: CLLocationManager, doneDetermineState state: CLRegionState, forRegion region: CLRegion)' с состоянием входа/выхода для пройденного региона. – davidgyoung

1

Как интересный лакомый кусочек: в последний раз, когда мы его измеряли, порог RSSI, над которым маяк считается «в диапазоне» посредством мониторинга, составлял -88 дБм включительно. (т. е. вы получите «ввод», если RSSI будет превышать это значение, а «выход», если он опустится ниже него, просто помните о 30-секундной задержке на выход).

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

+0

Спасибо за информацию. Я работаю с маяками в непосредственной близости от внутренней среды. Из-за этого у меня есть мощность маяка, повернутая вниз на маяки (поэтому они имеют радиусы от 5 до 10 футов). Я задаюсь вопросом, вызывает ли эта более низкая мощность некоторые проблемы надежности при мониторинге (как это предложил @davidgyoung) – mattnedrich