Our app logs workers’ arrival and departure at work sites using CLLocationManager region monitoring (up to 20 circular regions, “Always” authorization). Each worker’s list of sites changes on our server (daily schedule, occasional same-day changes). When it changes, we send a background push (apns-push-type: background, apns-priority: 5, aps containing only content-available: 1), and the app fetches the new list and re-registers its regions.
On real users’ iPhones (iOS 26.6.2) these pushes often aren’t acted on for hours. It’s typically a newly installed app the user rarely opens, sometimes swiped away, possibly in Low Power Mode. Users won’t open the app or change settings. Region monitoring itself works well for us, including relaunching the app after a swipe-away.
We understand background pushes are best-effort, so we’re planning to:
fetch the list whenever the app is relaunched by a region event
pre-load the next work day’s sites in advance
coalesce pushes (max ~2/hour per device)
Questions:
Is there a recommended way to keep monitored regions in sync with server-side changes for an app the user rarely opens, without user interaction or broader location tracking (we want to avoid significant-location-change for privacy reasons)?
If the app is relaunched by a region event, is it fine to do a network fetch and re-register regions in that same background launch?
As a fallback when a device hasn’t fetched after a change, would an alert push with mutable-content and a Notification Service Extension that downloads the new list be an acceptable use?
On iOS 26, does region monitoring still relaunch an app that was swiped away from the app switcher?