Push notifications
A push notification is a message which is immediately delivered to a user's device when the device is either idle or running the client app in the background. Push notifications for iOS client apps are sent using Apple Push Notification service (APNs), which contains custom data that your app needs in order to respond to the notifications. When a message is sent to Sendbird server through our Chat SDK for iOS, the server communicates with APNs, and then APNs delivers a push notification to an iOS device where the client app is installed.
Note: By default, when a user to receive messages is being disconnected from Sendbird server, the server sends notification requests to APNs for the messages. The Chat SDK for iOS automatically detects when a user's client app goes into the background from the foreground, and updates the user's connection status to disconnected. Therefore, in normal cases, you don't need to explicitly call the
disconnectWithCompletionHandler:
method.
Notifications can also be configured to display an alert, play a sound, or badge your app’s icon and are only applicable to group channels. They can't be applied to an open channel or a supergroup channel due to the massive number of users and messages.
Push notifications support both single and multi-device users and they are delivered only when a user is fully offline from all devices even when they use only one device. In other words, if a user is online on one or more devices, notifications aren't delivered and thus not displayed on any devices.
Additional multi-device support for push notifications is also provided. If selected from your dashboard, for multi-device users, notifications are delivered to all online and offline devices. However, through iOS, notifications are displayed only on offline devices.
Note: Depending on how you implement a client app, push notifications can be displayed even when the app is in the foreground, given that additional multi-device support for push notifications is selected in your dashboard. Refer to Apple Developer Documentation to learn how.
This page describes how to obtain iOS and APNs credentials from the Apple Developer portal and how to implement our push notifications in your iOS client app.
How to register push notification credentials
The following steps explain how to download your push notification credentials for APNs and register them to the Sendbird Dashboard.
Step 1 Create your certificate signing request
Note: Before you begin, you should already have an app ID assigned to a client app.
To obtain a signing certificate required to sign apps for installation on iOS devices, you should first create a certificate signing request (CSR) file through Keychain Access on your Mac.
- Open the Keychain Access from the Utilities folder, go to Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority, and then click.
- The Certificate Information dialog box appears. Enter the email address that you use in your Apple Developer account, and enter a common name for your private key. Don't enter CA email address, choose Saved to disk, and then click the Continue button.
- Specify the name of your CSR to save and choose the location to save the file on your local disk. Then your CSR file is created, which contains a public/private key pair.
Step 2 Create your push notification SSL certificate
- Sign in to your account at the Apple Developer Member Center and choose Certificates, Identifiers & Profiles. In the Identifiers > App IDs, select the Push Notifications service, and then click the Configure button.
- When prompted by a pop-up window, choose which SSL certificate to create either
Development
orProduction
.
- In the Certificates, Identifiers & Profiles pane that appears after the selection, under Upload a Certificate Signing Request, upload the CSR file you created through the Choose File button. Then to complete the process, click the Continue button above. When the certificate is ready, choose Download to save it to your Mac.
- In order to install the downloaded certificate to the Keychain Access on your Mac, double-click it. You can find the certificate in the Keychain Access > login > Certificates.
Step 3-1 Export a .p12 file and upload to Sendbird Dashboard
Sendbird server needs to use some of your confidential information in your .p12
file to communicate with and send notification requests to APNs on behalf of your server. A .p12
file is a set of certificates that you generated when building a client app for iOS.
Note: Now you can use a
.p8
file to communicate with APNs and register it in the Sendbird Dashboard. See Step 3-2: Export a .p8 file and upload to Sendbird Dashboard for more information.
You can register your .p12
file to Sendbird server through your dashboard or by using the Chat API's add an APNs push configuration action. The following steps show how to register a .p12
file in the Dashboard.
- Open Keychain Access and go to login > Certificates. Find the push notification SSL certificate you just added, right-click the certificate, and then select Export "YOUR_PROJECT_NAME" from the context menu to get a
.p12
file that contains the certificate.
- Type a name for the
.p12
file and save it to your Mac. Do not provide an export password when prompted. Then sign in to your dashboard and upload the file under Settings > Chat > Notifications.
- When a dialog opens up, select
.p12
for Format. Then click the Choose file and select your.p12
certificate to upload. Once the file is uploaded, a password box appears. If needed, you can also set a password for the file.
Step 3-2 Export a .p8 file and upload to Sendbird Dashboard
Sendbird server needs to use some of your confidential information in your .p8
file to send notification requests to APNs on behalf of your server. A .p8
file is an authentication token that is generated when you build a client app for iOS.
You can register your .p8
file to Sendbird server through the Sendbird Dashboard or by using the platform API’s add an APNs push configuration action. The following steps show how to register a .p8
file in the dashboard.
Note: To learn more about the authentication token with a
.p8
extension, visit Apple Developer's Documentation on a token-based connection to APNs.
- Log into your Apple Developer account and go to Certificates, Identifiers & Profiles > Keys. Then click Create a key.
- Once an authentication key is created, register the key with a key name of your choice and select a service you want to use. In this case, check Apple Push Notifications service (APNs) in the table. Then click Continue.
- Make sure the key name and service chosen are correct. Then click Register.
- Once the key is registered, you can download the key as a file with a
.p8
extension. Download the file so that you can add it to the Sendbird Dashboard.
Note: The file can be only downloaded once. Make sure to remember the directory where your file is downloaded.
- Sign in to your Sendbird Dashboard and upload the file under Settings > Chat > Notifications.
- When a dialog opens up, select
.p8
for Format. Then click Choose file and select your.p8
key file to upload. Once the file is uploaded, select SSL certificate type between Production and Developer.
Step 4 Register a device token to Sendbird server
When requested to send notifications to a specific client app on an iOS device, APNs requires the app instance's unique device token which has been issued by the notification service. Therefore, to send notification requests to APNs on behalf of your server, Sendbird server needs every device tokens of your client app instances. If an app instance is successfully registered to APNs via the registerForRemoteNotifications
method, a device token is passed to an app delegate object's application:didRegisterForRemoteNotificationsWithDeviceToken:
method which is called by the app. Like the following sample code, you should register this token to Sendbird server by passing it as an argument to a parameter in the registerDevicePushToken:unique:completionHandler:
method.
Note: A user can have up to 20 APNs device tokens. The oldest token will be deleted before a new token is added for a user who already has 20 device tokens. Only the 20 newest tokens will be maintained for users who already have more than 20.
Note: If
SBDPushTokenRegistrationStatusPending
is returned through thecompletionHandler:
, this means that your user is not being connected to Sendbird server when theregisterDevicePushToken:unique:completionHandler:
is called. In this case, we recommend that you first get a pending device token by using thegetPendingPushToken
, and then register the token by invoking theregisterDevicePushToken:unique:completionHandler:
in a callback of theconnectWithUserId:completionHandler:
orconnectWithUserId:accessToken:completionHandler:
when your user has been connected to the server afterward.
Make sure you call the following code in the appropriate place to receive permissions from your users.
Step 5 Handle a notification payload
Sendbird server sends notification requests to APNs with the following options:
Option | Description |
---|---|
alert |
|
sound | The default alert sound of iOS |
badge | The total number of each user's unread messages. You can turn off this badge count from your dashboard. |
The server also sends an additional JSON
object with the sendbird
key. For notification requests, APNs then delivers notifications to iOS devices. At the client side, you can parse the data payload and handle the result to implement user reactions within the application:didReceiveRemoteNotification:fetchCompletionHandler:
method, which covers all notifications from the application states of inactive
, foreground
, and background
.
The following is a complete payload format of the sendbird
object, which contains a set of provided key-value items. As for the channel_unread_count
, the attribute can be added into or removed from the payload under Settings > Chat > Notifications in the Sendbird Dashboard.
Step 6 Enable multi-device support in the Dashboard
After the above implementation is completed, choose your push notification option depending on how much support for multi-device push the client app requires. Go to Settings > Application > Notifications > Push notifications for multi-device users in your dashboard.
To find out which push notifications best suits the client app use cases, refer to the table below:
Send when all devices are offline | Send as long as one device is offline | |
---|---|---|
Single-device user | Displayed when disconnected from the server and thus offline | Displayed when disconnected from the server and thus offline |
Multi-device user | Displayed only when all devices are offline | Displayed on all offline devices, regardless of whether one or more are online |
Note: For iOS client apps, no additional implementation is required to enable multi-device support. However, for Android client apps, additional implementation is required to enable multi-device support. To learn more, go to the Android's Multi-Device Support page.
Notification preferences
By registering or unregistering the current user's device token to Sendbird server like the following, you can turn push notifications on or off in the user's client app.
Note: The registration and unregistration methods in the code below should be called after a user has established a connection with Sendbird server via the connection methods such as
connectionWithUserId:completionHandler:
orconnectionWithUserId:accessToken:completionHandler:
.
The SBDPushTriggerOption
allows users to configure when to receive notifications as well as what type of messages will trigger notifications. This provides the following three options:
Option | Description |
---|---|
SBDPushTriggerOptionAll | When disconnected from Sendbird server, the current user receives notifications for all new messages including messages the user has been mentioned in. |
SBDPushTriggerOptionMentionOnly | When disconnected from Sendbird server, the current user only receives notifications for messages the user has been mentioned in. |
SBDPushTriggerOptionMentionOff | The current user doesn't receive any notifications. |
The SBDGroupChannelPushTriggerOption
also allows users to configure the trigger for notifications as well as turn on or off notifications for each channel. This provides the following three options:
Option | Description |
---|---|
SBDPushTriggerOptionDefault | The current user’s push notification trigger settings are automatically applied to the channel. This is the default setting. |
SBDPushTriggerOptionAll | When disconnected from Sendbird server, the current user receives notifications for all new messages in the channel including messages the user has been mentioned in. |
SBDPushTriggerOptionMentionOnly | When disconnected from Sendbird server, the current user only receives notifications for messages in the channel the user has been mentioned in. |
SBDPushTriggerOptionOff | The current user doesn't receive any notifications in the channel. |
If you want to routinely turn off push notification on the current user's client app according to a specified schedule, use our Do Not Disturb
feature like the following.
Note:
Do Not Disturb
can also be set for a user with our Chat Platform API's update push notification preferences action.
To snooze notifications for specific period of time, use our snooze
feature like the following.
Note:
snooze
can also be set for a user with our Chat Platform API's update push notification preferences action.
Push notification content templates
Push notification content templates are pre-formatted forms that can be customized to display your own push notification messages on a user’s device. Sendbird provides two types: default and alternative. Both templates can be customized from your dashboard by going to Settings > Chat > Notifications > Push notification content templates.
Content templates
There are two types of push notification content template: Default and Alternative. Default template is a template that applies to users with the initial notification message setting. Alternative template is used when a user selects a different notification content template instead of the default template.
The content in the template is set at the application level while the selection of templates is determined by a user or through the Platform API.
Note: When a custom channel type has its own customized push notification content template, it takes precedence over the default or alternative templates.
Both templates can be customized using the variables of sender_name
, filename
, message
, channel_name
, and file_type_friendly
which will be replaced with the corresponding string values. As for the file_type_friendly
, it will indicate the type of the file sent, such as Audio, Image, ans Video.
Refer to the following table for the usage of content templates:
Text message | File message | |
---|---|---|
Default template | {sender_name}: {message} (ex. Cindy: Bye!) | {filename} (ex. hello_world.jpg) |
Alternative template | New message arrived | New file arrived |
To apply a template to push notifications, use the setPushTemplateWithName:completionHandler:
method. Specify the type of the template with the name as either SBD_PUSH_TEMPLATE_DEFAULT
or SBD_PUSH_TEMPLATE_ALTERNATIVE
.
You can check the current user's setting with getPushTemplateWithCompletionHandler:
like the following:
Push notification tester
After registering a credential for push notification services, you can test whether push notification credentials and notification services work properly through the Sendbird Dashboard.
In Settings > Notifications > Push notification credentials on the dashboard, each credential has a Send button that allows you to send a test message. The test message will be sent to a target user and their device, which sets off a push notification on the device. At the same time, a new group channel will be created for this test, containing only the target user. If you've already tested push notification with the same target user and the same target device token, the message will be sent to the existing test channel.
Note: If there is another member in the test channel or the target user has left the channel, delete the test channel before carrying out a test.
- Go to Settings > Notifications > Push notification credentials on Sendbird Dashboard. Find a Send button in the right-end column of each table.
- You can search a target user by either their User ID or Nickname in the popup window. Once a user is selected, choose a target device from a list of device tokens linked to the user.
- Double check to see if you've selected a correct device token of the user because this push notification will show up on an actual mobile device. Confirm the target channel name and URL, then send the message.
Note: If this is your first test, a new test channel will be created. For future tests with the same target user and the same target device token, the name and URL of the existing test channel will show above the message box.
- Check to see if the push notification arrived on the mobile device. The test message will state the time when Sendbird server sent the message.
Note: For iOS devices, only an actual mobile device can receive push notifications while emulators can't.
Push notification translation
Push notification translation allows your users to receive notifications in their preferred languages. Users can set up to four preferred languages. If messages are sent in one of those languages, the notifications won’t be translated. If messages are sent in a language other than the preferred languages, the notifications will be translated into the user's first preferred language. In addition, the messages translated into other preferred languages will be provided in the sendbird
property of a notification payload.
Note: A specific user's preferred languages can be set with our Chat API's update a user action.
Using the method as follows, the current user's preferred languages can be set:
If successful, the following notification payload will be delivered to the current user's device.