Location after reinstallation on watchOS 10

I am testing my app on watchOS 10 though, After installing the app once on the Apple Watch and getting location permissions with CLLocationManager, Uninstall the app and install it again, When I check from Privacy in the Settings app on my Apple Watch, location is still allowed, but location information is no longer available.

Does anyone know how to fix this?

Can you try toggling permissions off and back on again in Settings > Privacy & Security > Location Services > [your app] on the paired iPhone?

I have the same problem since watchOS beta 7 When I debug code running on the watch I see that permissions are granted but CLLocationManager delivers no locations. Instead func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) is called with message

Error Domain=kCLErrorDomain Code=1 "(null)" - The operation couldn’t be completed. (kCLErrorDomain error 1.) BMLocationManager.swift locationManager(_:didFailWithError:)

What doesn't help so far:

  1. Switching locations permissions off and on again
  2. Restarting the watch and phone
  3. Unpairing and pairing the watch
  4. Switching to Ask next time state (permissions dialog appeared on the phone but didn't help the watch)

I'm experiencing the same issue too, it seemed to be introduced in one of the recent beta releases as I'm pretty sure I tested the same scenario when the first iOS 17/watchOS 10 Beta was released and it worked as expected.

My app has a companion watchOS app which requests location permission.

Replication Steps

  1. Install iOS and companion watchOS apps.
  2. After prompt, grant location permission on watchOS app (Location permissions work as expected at this point).
  3. Reinstall iOS and companion watchOS apps.

Expected

The watchOS app requests location permission and the user is promoted to grant the permission.

Actual

The watchOS app requests location permission but the user is not prompted to grant the permission and therefore locations data cannot be retrieved.

Workaround

If you reset Location & Privacy settings the user is prompted for permission the next time the watchOS app requests location permission.

Go to Settings > General > Transfer or Reset iPhone, tap Reset, then tap Reset Location & Privacy.

Technical Notes

After reinstalling the apps and starting the watchOS app the CLLocationManagerDelegate doesn't receive the initial call to locationManagerDidChangeAuthorization(_ manager: CLLocationManager) with the current authorization status. In addition, getting authorizationStatus from the CLLocationManager instance returns .notDetermined and calling requestWhenInUseAuthorization() does not prompt the user for permission.

Same problem here. Working fine until installed WatchOS10 beta.

Ok, I traced my issue back to when I took the Xcode recommended setting to upgrade my watch app into a single app, removing the extension.

My TestFlight build prior to that works, this build doesn't.

However, I can't figure out the problem with the single watch app, I have a hunch the location permission setting is referring to the old bundle id (extension).

I reverted the commit which turned my watch app into a single app and uploaded to TestFlight.

Location services are working again.

I'm seeing this for my watch app on the released watchos 10 and XCode 15. The phone app is fine, and the watch app permissions look fine in the Settings app on the watch, but tracking doesn't work

The last comment on this question https://developer.apple.com/forums/thread/736785?page=2 seems to be correct — if you reset permissions, either by restarting the simulator or for the real device, Reset Location & Privacy in phone settings, then it works, until the next reinstall when it will go wrong again.

This is still an issue on 10.0.2, but the behaviour is slightly different. When you construct a CLLocationManager object:

  • initially the auth status is Always (as it says in the Settings app), but starting location updates results in a Denied error
  • you immediately get a locationManagerDidChangeAuthorization callback, with authorizationStatus being Not Determined
  • if you call requestWhenInUseAuthorization(), nothing happens and you still can't get location updates

On 10.0.1, the only difference was that the locationManagerDidChangeAuthorization callback didn't occur until the watch app left the foreground. On 10.0.2, it appears to happen immediately.

This issue, as I was experiencing it (https://developer.apple.com/forums/thread/736574?answerId=763408022#763408022) has been resolved in the Beta releases of iOS 17.1 and watchOS 10.1.

I've tested the replication steps with my app and a sample app and confirmed that after reinstalling the companion watch app the location authorization was successfully requested and locations were returned.

Will confirm once the releases are public and close related feedback (FB13098566).

Location after reinstallation on watchOS 10
 
 
Q