Chat / iOS
Chat iOS v4
Chat iOS
Chat
iOS
Home
/
Chat
/
iOS
/
Notifications
This is the new Docs for Chat SDK v4 for iOS. To see the previous Docs, click here.

Notification preferences

By registering or unregistering the current user's registration token to the Sendbird server as below, you can turn push notifications on or off in the user's app. The registration and unregistration methods in the code below should be called after a user has established a connection with the Sendbird server via the connection methods such as connect(userId:completionHandler:) or connect(userId:authToken:completionHandler:).

func setPushNotification(enable: Bool) {
    guard let token = SendbirdChat.getPendingPushToken() else { return }

    if enable {
        SendbirdChat.registerDevicePushToken(token, unique: true) { status, error in
            guard error == nil else {
                // Handle error.
                return
            }
        }
    }
    else {
        // If you want to unregister the current device only,
        // invoke this method.
        SendbirdChat.unregisterPushToken(token) { response, error in
            guard error == nil else {
                // Handle error.
                return
            }
        }

        // If you want to unregister the all devices of the user,
        // invoke this method.
        SendbirdChat.unregisterAllPushToken { (response, error) in
            guard error == nil else {
                // Handle error.
                return
            }
        }
    }
}

The setPushTriggerOption(_:completionHandler:) setter allows users to configure the type of the message to trigger notifications for all group channels. The following three options are provided.

List of push trigger options

OptionDescription

all

When disconnected from the Sendbird server, the current user receives notifications for all new messages including messages the user has been mentioned in.

mentionOnly

When disconnected from the Sendbird server, the current user only receives notifications for messages the user has been mentioned in.

off

The current user doesn't receive any notifications.

// Send notifications only when the current user is mentioned in messages.
SendbirdChat.setPushTriggerOption(.mentionOnly) { error in
    guard error == nil else {
        // Handle error.
        return
    }
}

The setMyPushTriggerOption setter also allows users to configure the type of the message to trigger notifications for each group channel. The following four options are provided.

OptionDescription

default

The current user’s push notification trigger settings are automatically applied to the channel. This is the default setting.

all

When disconnected from the Sendbird server, the current user receives notifications for all new messages in the channel including messages the user has been mentioned in.

mentionOnly

When disconnected from the Sendbird server, the current user only receives notifications for messages in the channel the user has been mentioned in.

off

The current user doesn't receive any notifications in the channel.

// Apply the user's push notification setting to the channel.
channel.setMyPushTriggerOption(.default) { error in
    guard error == nil else {
        // Handle error.
        return
    }
}

If you want to routinely turn on and 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 preferences action.

// The current user won't receive notifications
// during the specified time of every day.
SendbirdChat.setDoNotDisturb(enable: true, startHour: START_HOUR, startMin: START_MIN, endHour: END_HOUR, endMin: END_MIN, timezone: TIMEZONE) { error in
    guard error == nil else {
        // Handle error.
        return
    }
}

To snooze notifications for a 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 preferences action.

// The current user won't receive notifications
// from START_TS to END_TS.
SendbirdChat.setSnoozePeriod(enabled: true, startTimestamp: START_TS, endTimestamp: END_TS) { error in
    guard error == nil else {
        // Handle error.
        return
    }
}