Hi everyone. I am facing a very weird issue where the Location Manager's init method is being called over 100 times on app launch. I have added a print statement to the class init() and when I filter the results from the log I get a staggering 117 entries just in the first few seconds.
Here is my setup:
class LocationManager: NSObject, ObservableObject, CLLocationManagerDelegate { private let locationManager: CLLocationManager @Published var locationStatus: CLAuthorizationStatus? @Published var lastLocation: CLLocation? override init() { //initial setup for location monitoring locationManager = CLLocationManager() locationManager.requestAlwaysAuthorization() super.init() locationManager.delegate = self locationManager.allowsBackgroundLocationUpdates = true locationManager.activityType = .other locationManager.pausesLocationUpdatesAutomatically = false locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.showsBackgroundLocationIndicator = false locationManager.startMonitoringSignificantLocationChanges() startMonitoringHomeGeofence() let monitoredRegions = locationManager.monitoredRegions print("Monitored Regions: \(monitoredRegions.description)") print(" | Location Monitoring setup complete(This is the line that is printed out so often)") } }
And in my apps main view I initialize the object with:
@StateObject var locationManager = LocationManager()
I am not sure if this is a real problem, but as this method also initializes the region monitoring which to my knowledge should only be called once on startup and the fact that I get a burst of location updates on my server every time the app launches makes this behavior look like a error in my code, or a bug on apples side.
Has anyone got some ideas for me?
Take care David