We are seeing a reproducible issue on a physical iPhone with Dynamic Island.
Steps to reproduce
Install and launch version 1 of the app locally.
Start background location tracking using CLLocationUpdate.liveUpdates() together with CLBackgroundActivitySession.
Move the app to the background. The blue location indicator appears in the Dynamic Island.
While tracking is still active, install version 2 over the existing app.
Open the updated app.
Stop all location tracking:
Cancel the CLLocationUpdate task.
Call invalidate() on the CLBackgroundActivitySession.
Release all references to the session.
Move the app to the background again.
Expected behavior
The blue background location indicator disappears after the location updates and background activity session have been stopped.
Actual behavior
The blue location indicator remains permanently visible in the Dynamic Island, even though:
No location updates are being received.
No CLBackgroundActivitySession is retained.
Starting and stopping another location session does not remove it.
Force-quitting and reopening the app does not remove it.
Only restarting the iPhone makes the indicator disappear.
The problem occurs when a new build is installed over an existing installation while a background location session is active. Starting and stopping the same session normally within one installed version works as expected.
Comparison with Live Activity background location
The app also has a separate location feature that uses an active Live Activity to support background location updates without creating a CLBackgroundActivitySession.
Installing a new build while that feature is active does not cause the blue location indicator to become stuck. The problem has only been reproduced when a CLBackgroundActivitySession is active during the installation.
This suggests that the issue is specifically related to transferring or cleaning up CLBackgroundActivitySession state across an app update, rather than to CLLocationUpdate.liveUpdates() itself.
Questions
Is this a known issue with CLBackgroundActivitySession or CLLocationUpdate.liveUpdates()?
Is there a supported way for the newly installed app process to invalidate or clean up a background location session created by the previous app process?
4
0
425