Подключение к нескольким iBeacons одновременно

Если у меня есть устройство, выступающее в качестве приемника, и оно подключается к iBeacon, что произойдет, если оно подключится к другому iBeacon, пока еще обрабатывает подключение к первому (например, не завершил ли выполнение метод didEnterRegion)? Платформа автоматически обрабатывает это и создает другой тип "экземпляра", или я могу столкнуться с проблемами?

Спасибо

2 ответа

Я думаю, что если они все передают один и тот же регион (то есть все они имеют одинаковый UUID близости), то CoreLocation не будет отправлять didEnterRegion а также didExitRegion методы.

Как только вы начинаете ранжирование по региону (это глоток), locationManager:didRangeBeacons:inRegion: метод вызывается повторно, где вы можете получить подробную информацию о подключенных маяках.

Если CoreLocation обнаруживает два разных события входа в регион в быстрой последовательности, вполне возможно, что два потока выполнят ваш делегат didEnterRegion одновременно. Так что да, вы можете столкнуться с проблемами.

По этой причине вы должны быть осторожны с:

  1. Разработайте ваш код в этом методе так, чтобы он работал правильно, если выполнялся в одновременных потоках.

  2. Создайте свой код таким способом, чтобы он быстро завершался. Любая длительная обработка должна выполняться в новом потоке.

Хотя в вопросе упоминается "подключен к другому iBeacon", важно понимать, что фактического соединения не существует - маяки являются только передающими устройствами, и iOS будет пассивно искать их и отправлять методы обратного вызова делегата, основываясь на том, начав их видеть, или нет дольше видя их.

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