У меня есть приложение для iOS, которое обнаруживает маяки BLE. Методы CLLocationManagerDelegate
были реализованы в AppDelegate. Теперь, когда приложение находится на переднем плане, didRangeBeacons
дает пустой массив маяков в журналах.
Я уже пытался явно запустить ранжирование в контроллерах вида, но все равно не работает.
class AppDelegate: UIResponder, UIApplicationDelegate {
...
lazy var locationManager: CLLocationManager = {
let locationManger = CLLocationManager()
locationManger.delegate = self
return locationManger
}()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
if CLLocationManager.authorizationStatus() == .authorizedAlways {
locationManager.startMonitoring(for: beaconRegion)
locationManager.startMonitoring(for: beaconRegion2)
}
}
...
}
extension AppDelegate: CLLocationManagerDelegate {
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
if beacons.count > 0 {
print("From Region \(region.identifier)")
} else {
print("empty")
}
}
Всегда печатает пустой, когда на переднем плане.
Это должно дать мнеближайшие маяки в регионе.
Странная вещь, когда приложение переводится в фоновый режим, оно сразу обнаруживает и показывает все маяки.