Подключение к нескольким iBeacons одновременно
Если у меня есть устройство, выступающее в качестве приемника, и оно подключается к iBeacon, что произойдет, если оно подключится к другому iBeacon, пока еще обрабатывает подключение к первому (например, не завершил ли выполнение метод didEnterRegion)? Платформа автоматически обрабатывает это и создает другой тип "экземпляра", или я могу столкнуться с проблемами?
Спасибо
2 ответа
Я думаю, что если они все передают один и тот же регион (то есть все они имеют одинаковый UUID близости), то CoreLocation
не будет отправлять didEnterRegion
а также didExitRegion
методы.
Как только вы начинаете ранжирование по региону (это глоток), locationManager:didRangeBeacons:inRegion:
метод вызывается повторно, где вы можете получить подробную информацию о подключенных маяках.
Если CoreLocation
обнаруживает два разных события входа в регион в быстрой последовательности, вполне возможно, что два потока выполнят ваш делегат didEnterRegion
одновременно. Так что да, вы можете столкнуться с проблемами.
По этой причине вы должны быть осторожны с:
Разработайте ваш код в этом методе так, чтобы он работал правильно, если выполнялся в одновременных потоках.
Создайте свой код таким способом, чтобы он быстро завершался. Любая длительная обработка должна выполняться в новом потоке.
Хотя в вопросе упоминается "подключен к другому iBeacon", важно понимать, что фактического соединения не существует - маяки являются только передающими устройствами, и iOS будет пассивно искать их и отправлять методы обратного вызова делегата, основываясь на том, начав их видеть, или нет дольше видя их.