Notification Summary and Focus Modes
Apple introduced two new system controls to let users determine how they want to interact with push notifications and when they want to be interrupted.
Notification Summary
The Notification Summary is an optional feature that allows users to stop receiving push notifications in real-time for specific apps. Instead, the system stores the notifications received for these apps and displays them in a summary on the lock screen. These summaries can be triggered at different moments of the day by the OS, depending on your users' preferences.
iOS doesn't add apps automatically to the notification summary. Users need to add them manually from the system settings the first time the feature is enabled:
Once the notification summary is turned on, the push permission prompt will start offering two options to receive notifications from your app:
"Allow Immediate Notifications": Users will receive notifications as soon as you send them.
"Add to Scheduled Summary": Notifications coming from your app will be displayed later, in the notification summary.
Please note that iOS doesn't provide a method to detect the push opt-in preference picked by your users (immediate notifications vs scheduled summary).
Focus Modes
iOS 15's new Focus Mode is an improved and extended version of the current "Do Not Disturb" mode. Users can create different "Focus Modes" to filter the notifications they receive during an activity (e.g. working, driving, etc). From the system settings, users can create a "Work" focus and set it up to receive alerts from colleagues, family members, and specific productivity apps as soon as they arrive.
Alerts related to other contacts and apps while the focus mode is active will only be displayed in the notification centre, as follows:
New notifications interruption levels
In addition to the new Notification Summary and Focus Modes, iOS 15 introduces two new interruption levels for push notifications: passive and time-sensitive.
There are four distinct interruption levels in total:
Passive: Use the passive mode for notifications that do not require immediate attention (e.g. optional recommendation, etc). Passive notifications don't trigger sound/vibration or light up the screen.
Active: This is the default interruption level (e.g. sports updates, breaking news alerts, etc).
Time-Sensitive: Use the time-sensitive interruption level for notifications requiring immediate attention (e.g. account security issue, package delivery alert, etc). That interruption level should not be used to send marketing notifications as these notifications can break through system controls (Notification Summary and Focus Modes).
Critical: Use the critical interruption level for highly important notifications that require immediate attention (e.g. severe weather alerts, etc). That usage must be allowed explicitly by Apple with a special entitlement.
Please note that both the time-sensitive and critical interruption levels can break through the notification summary and any Focus Modes. iOS will inform your users that the notification they have just received has been sent using the time-sensitive interruption level:
If your time-sensitive notifications are not often interacted with, iOS will prompt your users from the lock screen to let them disable time-sensitive alerts for your app. Users can disable time-sensitive alerts from the system settings as well:
Sending a time-sensitive alert
Prerequisites
In order to use time-sensitive notifications, you will need to add the "Time Sensitive Notifications" capability to your Xcode project.
Setting up your push campaign
The time-sensitive interruption level can be controlled using the 'interruption-level' payload key:
{"aps":{"interruption-level":"time-sensitive"}}
On Batch dashboard, you will need to add that key to the "custom payload" field of the campaign creation form:
In case you are planning to send time-sensitive notifications using Batch Transactional API for 1-to-1 alerts (e.g. delivery alert, security notification, etc), you will need to add the same key for the custom_payload
attribute.
Here is how it looks for a new alert:
{
"group_id": "order_confirmed",
"recipients": {
"custom_ids": [
"mike@batch.com"
]
},
"message": {
"title": "Your order is confirmed!",
"body": "We will send you a shipping confirmation alert as soon as your order ships."
},
"custom_payload": "{\"aps\":{\"interruption-level\":\"time-sensitive\"}}"
}