iOS: Provisional Push Notifications
Provisional Notifications can be sent to users without needing to first request notification permissions.
iOS 12 introduced Provisional (Also known as Direct-To-History) push notification authorization. This means that instead of having to prompt the user for permission to send them push notifications, your app can request provisional authorization.
As these are provisional there is some reduced functionality including
- No banner shown
- No corresponding sound
- No user alert
- Sent directly to the Notification Center
If the user selects Keep... in response, then they have the options:
- Deliver Quietly: Subscribes the user to quiet push notifications. It keeps push notifications silent and only shows on Notification Center. Additionally, it removes the options to "Keep..." or "Turn off..."
- Turn Off: Unsubscribes the user from notifications.
You can still prompt the user to subscribe normally to push even with these turned on or turned off.
If you prompt for regular push notifications and the user denies, they will not get any further push notifications.
How do I disable or enable provisional authorization?
To enable or disable provisional authorization for your app, go to your OneSignal dashboard Settings > Apple iOS > Advanced Configuration > Enable iOS 12 direct to history option for your app (which currently requires using the OneSignal SDK 2.9.0 or newer).
To disable uncheck the box (this is unchecked by default).
What is the difference between Provisional vs. Normal Authorization?
Once you enable provisional notifications for your app, iOS 12 users will automatically be authorized the next time they launch the app.
However, your application can still request push notification permissions traditionally, which will still cause the permission prompt to be shown to the user.
Once you've enabled direct to history in the Dashboard, our SDK will automatically request provisional authorization and you will be able to send push notifications to these users.
However, if you only want to request provisional authorization in only some situations, you can also use a new method in our SDK:
OneSignal.registerForProvisionalAuthorization({ accepted in
//handle authorization
})
[OneSignal registerForProvisionalAuthorization:^(BOOL accepted) {
//handle authorization
}];
Updated about 2 years ago