I'm unclear as to Apple's intent for starting location monitoring. Say I want to request "Always" auth, and get the location callbacks enabled by startUpdatingLocation(). Apple docs for requestAlwaysAuthorization() say:
You may call requestAlwaysAuthorization() when the current authorization state is either .notDetermined or .authorizedWhenInUse. ... Your app can no longer ask for Always authorization after the user responds to this prompt. Calling this method again will have no effect.
This implies we should check the state before calling it. However the docs on authorizationStatus() say:
Use of authorizationStatus() is unnecessary and discouraged. Instead, implement the locationManager(_:didChangeAuthorization:) delegate callback to receive up-to-date authorization status.
So should you just always call requestAlwaysAuthorization() when you start up even if you already have permissions, and then call startUpdatingLocation() if you get an "authorized" status in the didChangeAuthorization callback? Is the callback guaranteed to occur? Or should you just call startUpdatingLocation() whether you've gotten an authorized callback or not, and you'll start getting updates when the permissions allow it? The last bit is what I've seen in testing, but I don't want to run afoul of Apple's guidelines on this.