В iOS можно зарегистрировать максимум 20 экземпляров CLRegion для мониторинга одновременно. Каждый из этих должен указывать как минимум ProximityUUID, но может оставить основной и вспомогательный нуль, сопоставляя любой из миллиардов маяков с тем же ProximityUUID. Но есть также потенциально много миллиардов различных UUID Proximity, так что это определенно не будет соответствовать всем маякам.
Несмотря на то, что вы не можете зарегистрировать более 20 ProximityUUID для мониторинга одновременно, вы можете изменить те из них, которые зарегистрированы по мере изменения вашего местоположения, как вы предлагаете. Я на самом деле создал веб-сервис под названием Ningo , который позволяет вам получить список известных ProximityUUID, которые были обнаружены ранее на заданном расстоянии от вашего местоположения. Для этого здесь имеется также бесплатный клиентский SDK для клиентской библиотеки с открытым исходным кодом, а также полноценное справочное приложение (включая бесплатный исходный код), которое делает именно это, чтобы вы могли обнаружить практически любой маяк.
Еще одна более простая альтернатива - просто использовать iOS Ranging API. В отличие от API-интерфейсов мониторинга, не существует ограничений на количество экземпляров CLRegion, которые вы можете зарегистрировать для ранжирования, хотя практические ограничения означают, что система действительно замедляется после того, как вы зарегистрируете более 100. API Ranging позволит вам обнаружить любой маяк, если ваше приложение уже запущен, но в отличие от Monitoring API, он не позволит вам разбудить ваше приложение, когда появится маяк. Но опять же, так как телефон замедлится до ползания, если вы попытаетесь зарегистрировать многие тысячи регионов, это не практичный способ обнаружения любого маяка.