0

Я пытаюсь создать тестовое приложение, которое будет обнаруживать определенный набор iBeacon, развернутый в нескольких физических местах. Обнаружение должно выполняться в фоновом режиме и выполнять вызов сервера по определенной логике.Доступны ли основные/второстепенные значения iBeacon при мониторинге региона?

Apple's rule of thumb использует тот же UUID для всех моих физических мест:

идентификатора UUID является общим для всех местоположений.

Это позволяет устройству iOS использовать один идентификатор для распознавания любого из магазинов с одним регионом.

Каждый конкретный магазин, Сан-Франциско, Париже и Лондоне, затем присваивается уникальный Важнейшее значение, что позволяет устройству определить, какие именно магазин он находится.

Я нашел the call for setting a region with a given UUID, но не сделал найти, какой объект возвращается при обнаружении UUID и какие поля возвращаются.

Где приложение получить значение major/minor когда IOS обнаруживает маяк с заданной UUID?

ответ

3

При использовании API мониторинга вы получаете только CLBeaconRegion объект в обратном вызове ввода/выхода от CoreLocation. Область маяков, определенная этим классом, обычно не представляет собой отдельные маяки, а диапазон маяков, основанных на идентификаторах подстановочных знаков.

Из-за этого, если вы используете подстановочные знаки в определении вашего региона (как обычно) , вы фактически не можете видеть, какой конкретный маяк вызвал запись в регионе. Чтобы решить эту проблему, вы должны одновременно объединить оба API для мониторинга и ранжирования. Если вы одновременно контролируете и диапазоны, CoreLocation даст вам обратный вызов в методе didRangeBeacons beacons: [CLBeacon] inRegion region: CLBeaconRegion с массивом всех объектов, которые он видел.

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

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

Смежные вопросы