Photo by Rob Eradus from Pexels

Provisional Notifications on iOS

Robots & Pencils
RoboPress
Published in
4 min readMay 15, 2019

--

The challenge with notifications on iOS is obtaining user opt-in — mobile users are bombarded with interruptions clamoring for their attention, and obtaining the user’s willing acceptance of yet another distraction is getting harder. Airship found that new users who receive notifications are up to 3x more likely to continue to use an app after 90 days, showing the value of users opting-in.

The catch-22 with notifications on iOS has always been that the user has to give permission to enable them before they can experience their relevance and usefulness. A first-time user of the app cannot know in advance that your notifications offer value that justifies allowing distraction from the uninterrupted use of their device.

A common practice for obtaining acceptance for notifications is to query the user on first launch. Alternatively, a more nuanced approach is to delay querying the user until the permission is actually needed, which runs less risk of triggering an annoyed refusal. But generally, notification opt-in rates on iOS are low and lag behind Android, as found by Accengage.

New with iOS 12 are refinements to the system APIs for configuring notifications, to allow for a more graduated approach to introducing the user to the enhanced experience made possible by your notifications. iOS 12 offers a new prospect for drawing the user more gradually into your notification experience — the possibility of activating notifications on a non-interruptive basis. You can do this by supplying the .provisional option when your app makes its first call to UNUserNotificationCenter.requestAuthorization(options:). For example:

This has the effect of enabling notifications for your app without requiring permission from the user! The tradeoff is that notifications are enabled in what is called “Deliver quietly” mode — meaning users will never see a lock screen presentation of your notifications, and no badging, sounds, or banners will present during unlocked sessions. The notifications do appear in Notification Center but otherwise do not signal for the user’s attention in any way.

At this point, an on-boarding campaign can be the next step in convincing your user to engage more fully with your notifications. Through this campaign, you can direct the user to the Notification Center, where they can see an example notification and hopefully be persuaded to allow your notifications fully interruptive permissions. To be successful, it’s important to be aware of the new notification settings that are available to the user. Let’s take a look at these.

When a notification for an app with the .provisional option is viewed in Notification Center, the system adds buttons labeled “Keep…” and “Turn off…”. Here is where the user can decide to set your provisional notifications to be fully interruptive or be disabled completely. Here is also an opportunity to demonstrate the value of your notifications. The very first notification you show can be a local notification, previously delivered on first launch of your app, with messaging that explains what information the user can obtain from your notifications.

Once the user has chosen to keep receiving notifications, they can still revert so that messages are delivered like the .provisional option. The “Manage” menu can be revealed by swiping to the left on any notification in Notification Center and then tapping on the Manage button. From the “Manage notifications” dialog, the user can select the equivalent of provisional enablement for your app’s notifications by tapping on the “Deliver quietly” button.

This has the effect of disabling all notification options for your app, except for “Notification Center”.

For an app with notifications configured in this way, the subtitle on the Notifications setting summary is shown as “Deliver Quietly”.

If you want to programmatically detect that the user has selected the “Deliver Quietly” option for your notifications after choosing to keep them, you’ll need to do a little more work when using UNUserNotificationCenter.getNotificationSettings(completionHandler: (UNNotificationSettings) -> Void). This is because the UNNotificationSettings.authorizationStatus provided to your closure will be .authorized, not .provisional. If you want to know if the user has selected “Deliver quietly”, you will have to check each of the UNNotificationSettings properties to see if they equate to “Deliver quietly”.

Although touted at WWDC 2018 as a new feature for notifications, the “Deliver quietly” mode isn’t really a new mode for app notifications — it represents a combination of notification settings that were possible before on iOS, but that now have been given a name and some system UI to make the setting accessible in a single tap from the “Manage” menu in Notification Center.

However, iOS developers now have a new path to obtaining user opt-in to notifications for our apps. With the .provisional option for initializing notifications, we have the opportunity to present a more gradual, and less intrusive, on-boarding experience that will result in higher opt-in rates and an overall better user experience.

--

--

A digital innovation firm. We help our clients use mobile, web & frontier technologies to transform their businesses and create what’s next.