How iOS 12 Handles Always Location Permissions
When an app requests persistent background tracking in iOS 12, Apple enforces a strict authorization flow designed to maximize user privacy and prevent silent tracking. The operating system handles these requests through an explicit initial permission dialog, strict configuration requirements for developers, and automated periodic follow-up prompts that reveal background tracking behavior. This article explains how iOS 12 presents these options to users, enforces developer compliance, and continuously audits always-on location access.
The Initial Authorization Prompt
When an application invokes the
requestAlwaysAuthorization() API method in iOS 12, the
operating system presents a modal dialog directly to the user. Rather
than granting background access by default, iOS 12 displays three
distinct options:
- Always Allow: Permits the app to access location data both when the app is active on screen and when running in the background or suspended.
- Only While Using the App: Restricts location tracking strictly to foreground sessions.
- Don't Allow: Completely blocks the app from accessing location hardware.
The prompt includes a custom explanation string provided by the developer, which must clearly explain why the app requires continuous background tracking. If the developer fails to provide a clear explanation, Apple's App Store review guidelines mandate rejection.
Developer Requirements in Info.plist
For the prompt to appear correctly in iOS 12, developers must include
two specific keys inside the application's Info.plist
file:
NSLocationWhenInUseUsageDescription: Details why the app needs foreground location access.NSLocationAlwaysAndWhenInUseUsageDescription: Details why the app needs continuous access, even when closed.
If an app attempts to request "Always" authorization without declaring both keys, iOS 12 ignores the request entirely, and no prompt is displayed to the user.
Periodic Background Tracking Reminders
Granting "Always Allow" initially does not provide an app with indefinite, unmonitored access. iOS 12 employs an automated system reminder that triggers after an app has tracked the user's location in the background over a period of time.
This follow-up prompt appears automatically on the home screen or lock screen and includes:
- An interactive map showing the exact geographic pins where the app collected location data while running in the background.
- The original developer-provided reason for needing background access.
- Two buttons: Keep Only While Using and Continue.
This reminder allows users to revoke background privileges with a single tap if they feel the app is tracking them excessively or unnecessarily.
Visual Status Indicators
Beyond prompts and periodic reminders, iOS 12 alerts users in real time when an app uses location services. A solid or hollow arrow icon appears in the status bar whenever location hardware is active. If an app runs background location updates without the proper navigation or background audio modes active, iOS 12 displays a prominent blue status bar or banner across the top of the screen indicating that the application is actively tracking location in the background.