Существует два разных API-интерфейса iOS CoreLocation, и вам необходимо использовать первый для этой цели:
1.Beacon Ranging (Что вы хотите)
Вы называете locationManager.startRangingBeacons(in: region)
с определением региона, которое оставляет большой и младший ноль.Конструктор, который вы показываете init(proximityUUID: UUID,
identifier: String)
, делает именно это.
Это даст вам обратный вызов locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)
один раз в секунду с массивом всех CLBeacon
объектов, которые соответствуют определению вашего региона.Вы можете перебрать этот массив, чтобы увидеть их все.
2.Мониторинг маяков (То, что вы не хотите)
Вы звоните locationManager.startMonitoring(region: region)
с определением региона, которое оставляет большой и младший ноль.
Это даст вам обратный вызов на locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion)
или эквивалентный метод didExitRegion каждый раз, когда появляется как минимум один маяк, соответствующий определению региона, или все маяки, соответствующие региону, исчезают.
Это не позволит вам выполнить итерацию по всем совпадающим маякам, поскольку обратный вызов включает только определение региона, а не список совпадающих маяков.