Watch app doesn't receive location updates on watchOS 10 beta

Since the iOS 17 beta 6 update, my SwiftUI-based watch app, which serves as a companion to the phone app, no longer receives any location updates. Even though the permissions are set to 'When In Use' on the phone, the CLLocation delegate returns the following error every time the app requests a location update:

Error Domain=kCLErrorDomain Code=1 "(null)" - The operation couldn’t be completed. (kCLErrorDomain error 1.)

Additionally, the SwiftUI map does not display the user's location, indicating that the issue is not related to my CLLocationManager implementation on the watch.

While debugging on the watch, I observed that the service acknowledges the permissions as granted. On the phone, my location is displayed accurately. On watchOS 9.6, the same watch app receives location updates as expected. Furthermore, other apps on the watch receive location updates accurately, even on watchOS 10 beta. This issue is not isolated to my device; my colleagues have experienced the same problem with the TestFlight build.

I suspect that there may be an issue with my project configuration, although I am unsure why this was not a problem before the watchOS 10 beta. Currently, I am attempting to resolve the issue using:

  • Xcode 15.0 beta 8 (15A5229m)
  • watchOS 10 21R5349b
  • iOS 17 21A5326a

It is important to note that the issue is also present in watchOS 10 21R5355a.

I forget to add that issue affects not only builds installed from Xcode or TestFlight, but also one from App Store.

I am also having the same issue and it seems to have stopped working when I started to transition my app to support iOS17 and WatchOS10. My TestFlight users running WatchOS10 are having the same problem.

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).

Accepted Answer

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

Location services are working again.

I am also facing same issue with my watch os app. Whenever I remove app from device and install new from test flight then I'm not getting location authentication alert in watch os 10 beta. (It's working fine before watch os 10 beta)

Right now I'm using following workaround. (This workaround will reset all the apps locations and privacy)

  1. Make sure iPhone and watch is connected with Bluetooth.
  2. Remove watch app from background.
  3. Goto Settings app ->General->Transfer or Reset iPhone->Reset->Reset Location and Privacy.
  4. Open watch app again then you will receive location authentication alert.

@WeatherGods Thanks a lot for sharing your solution! Meanwhile I have tried to create blank project with only phone and separate watch app and locations in the watch version worked for me. So I think single app per se should not be source of the problem. Unfortunately for me it's not so easy to switch back to watch extension as the change was done more than one year ago.

We're also seeing this problem and submitted a bug report (FB13130970). If you haven't done it yet, I suggest you do it too so it gets more awareness at Apple. Let's hope this gets fixed before the final release.

We're having the same problem with our watch app with recent watchOS10 betas (couple weeks), that is, watch app fails to receive locations as described in first post. Looks like location authorisation status gets corrupted for some reason. We've isolated this problem into a separate project (iPhone + watch app), 100% reproducible. A standalone watch app does not show this problem. On our way to file a bug report too.

This is also related to the same Issue: FB13119312 (LocationButton does not work)

I'm also seeing the same, now on the RC build. This is on a new app and my first time developing for watchOS, so I thought it was just something I was doing wrong - but after trying it out on a watchOS 9 watch - everything works perfectly fine. On watchOS 10 RC + built with Xcode 15 RC my app gets authorizedWhenInUse when I call CLLocationManager.authorizationStatus, so I then proceed to request location, where I then get denied with Error Domain=kCLErrorDomain Code=1 "(null)"

I've even tried using the new way to fetch location using async/await (CLLocationUpdate.liveUpdates()), but seems to be the same issue, just in that case the task never completes or fails, I just never get a location. iOS app works fine on iOS 16/17. Watch app works on watchOS 9.

Anyone find any workarounds? I was excited to launch my first watchOS app at the watchOS 10 launch, but this bug has put a damper on things, and my app doesn't really work without current location. And I can't build with prior Xcode versions as I'm using watchOS 10 specific features...

watchOS 10 RC update.

I had my Apple watch on 10 beta 8, with the companion app stuck in the location problem described above. Upgraded both iPhone & watch to the RC releases, uninstalled the apps, and installed & run iPhone app from Xcode, went to watch app and installed it on the watch, started there. Same problem, watch app still stuck in the location request. Killed+uninstalled both apps, reset location permissions on iPhone, restarted the iPhone (not the watch), did the installation process again (Xcode run to iPhone + watch app to reinstall on the watch), and it worked.

I noticed that for companion apps, location permissions are listed on the iPhone (Settings > your app, location is first line) & not on the watch itself. When the problem occurs, that first location line is absent. My hypothesis is that something breaks the location permission of our app that reinstallation of both apps can't fix & a global reset of location permissions (+ Face ID access for all apps) is the only way out.

About what breaks it, I don't know. It seems that for companion apps, the iPhone is handling the permission for both devices. I suspect that maybe installing a new version of the app on iOS from Xcode while the watch app is running might be cause, or something similar (like running the watch app directly from Xcode with the iOS still at a previous version).

It is not clear if that can occur to end users that only install through App Store (no Xcode run). But if you happen to create the bug on your device, no app uninstall, no TF install, no App Store reinstall can fix it by itself.

Not too sure where to go from here. Would be interesting to know (for those with shipping apps) whether end users report such issues or if it is limited to those who run it at least once through Xcode. It is also possible that the problem won't reappear starting from the RC (did not experience it yet - will report if it's back).

@rsebbe all my watchOS10 TestFlight users experienced the problem, so I assume that normal App Store users will have this problem.

The global reset of location permissions doesn't feel like a solution as I assume it resets permissions for all apps? Can't see many users agreeing to that for a fix for one app.

As I said previously, what worked for me was backing out the single app watch recommendation which I applied. After that it was working again for everyone. I appreciate this isn't a solution for all of us.

So small update - I made a test app using Xcode 15 RC, my same location service used in the main app and a simple UI to request location and display it + any errors on both the phone and the watch. And...everything works fine.

My guess is prior Xcode beta versions had some build configuration issue set on the target, so I'm going to make a branch, delete my existing apple watch app target, and recreate a new one on the RC and see if that works.

@rsebbe @jclardy Good news everyone! It seems that if you install iOS 17 RC on device that never had pervious iOS 17 beta locations are received on the watch as expected! If you install on the watch simulator which you have not used with previous betas locations works there too. So I assume it should work in production as only minority of users would install your app on the beta iOS.

Also after you reset location permissions globally it starts to work. Till you delete and install the app again - then association is broken again. It might be that location permission even work in beta 6-8 if you just upgrade the app without deleting it at some moment. But for developer it's hard to trace.

Watch app doesn't receive location updates on watchOS 10 beta
 
 
Q