Context
PR #221 (fix for #220) added a sync pipeline bootstrap trigger in the Android LocationTrackingService.LogLocationToQueue() fallback path. When Android kills the app process and restarts the sticky foreground service headlessly, LocationPipelineWiring.EnsureBootstrappedAsync() is now called to re-wire delegates, drain services, and timeline storage.
The iOS LocationTrackingService does not yet have an equivalent trigger.
What needs to happen
Assess whether iOS has an equivalent headless restart scenario (e.g., significant location change wakeups, background fetch) where the sync pipeline could be null, and if so, add the same LocationPipelineWiring.EnsureBootstrappedAsync() call in the iOS fallback path.
Key differences from Android
- iOS uses a different lifecycle model (no sticky foreground services)
- iOS background location uses
CLLocationManager significant-change monitoring or region-based wakeups
- iOS may fully terminate and re-launch the app for location events, which would go through normal MAUI startup
Acceptance criteria
- Determine if iOS has a code path where
LocationTrackingService runs with null delegates (no MAUI bootstrap)
- If yes, add
LocationPipelineWiring.EnsureBootstrappedAsync() call in the iOS fallback path
- If no (iOS always goes through full app launch), document why and close this issue
References
Context
PR #221 (fix for #220) added a sync pipeline bootstrap trigger in the Android
LocationTrackingService.LogLocationToQueue()fallback path. When Android kills the app process and restarts the sticky foreground service headlessly,LocationPipelineWiring.EnsureBootstrappedAsync()is now called to re-wire delegates, drain services, and timeline storage.The iOS
LocationTrackingServicedoes not yet have an equivalent trigger.What needs to happen
Assess whether iOS has an equivalent headless restart scenario (e.g., significant location change wakeups, background fetch) where the sync pipeline could be null, and if so, add the same
LocationPipelineWiring.EnsureBootstrappedAsync()call in the iOS fallback path.Key differences from Android
CLLocationManagersignificant-change monitoring or region-based wakeupsAcceptance criteria
LocationTrackingServiceruns with null delegates (no MAUI bootstrap)LocationPipelineWiring.EnsureBootstrappedAsync()call in the iOS fallback pathReferences
LocationPipelineWiringsrc/WayfarerMobile/Services/LocationPipelineWiring.cs— shared bootstrapper