iOS 12 Provisional Notifications Explained
Provisional notifications, introduced by Apple in iOS 12, represent an automatic trial system for push notifications that allows apps to send messages without requiring upfront user permission. This article explains how provisional notifications function, how they differ from standard permission requests, and why they improve user engagement while maintaining user control.
The Problem with Traditional Notification Prompts
Prior to iOS 12, an application had to present an explicit system prompt asking for permission before it could send any notifications. If a user tapped "Don't Allow," the app was permanently blocked from sending push notifications unless the user manually navigated deep into the iOS Settings app to reverse the decision. Because apps often triggered this prompt immediately upon first launch, users frequently declined due to a lack of context or trust.
How Provisional Authorization Works
Provisional authorization bypasses the initial opt-in alert modal. Instead of asking immediately, an app can automatically grant itself provisional permission.
When an app uses this feature:
- Notifications bypass the lock screen entirely.
- Notifications make no sound, trigger no vibrations, and display no badges.
- The alerts are delivered quietly, appearing only within the iOS Notification Center.
This "deliver quietly" approach gives users an opportunity to evaluate the relevance and quality of the messages without being disrupted.
User Decision-Making Controls
Every provisional notification delivered to the Notification Center includes built-in management controls directly on the message bubble. When a user interacts with the notification, they are presented with two primary options:
- Keep...: Tapping this allows the user to choose between "Deliver Prominently" (which turns on full access with lock screen banners, sounds, and badges) or "Deliver Quietly" (which maintains the silent delivery behavior).
- Turn Off...: Tapping this immediately revokes authorization, blocking all future notifications from that app.
Technical Implementation
Developers implement provisional notifications by requesting
authorization via the UNUserNotificationCenter framework.
Instead of requesting only traditional permissions like
.alert, .sound, or .badge,
developers append the .provisional option:
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge, .provisional]) { granted, error in
// Authorization granted automatically for quiet delivery
}Because the system grants provisional authorization immediately
without displaying an alert, the completion handler returns
true automatically.
Benefits for Developers and Users
For users, provisional notifications reduce disruptive pop-ups during app onboarding and prevent unexpected noises or lock screen clutter. For developers, this mechanism eliminates the high bounce rate associated with early permission alerts, allowing the app's content to prove its utility before asking the user for full system access.