---
source_url: https://www.pubnub.com/docs/chat/chat-sdk/build/features/push-notifications
title: Mobile Push Notifications
updated_at: 2026-05-19T12:09:46.048Z
---

> Documentation Index
> For a curated overview of PubNub documentation, see: https://www.pubnub.com/docs/llms.txt
> For the full list of all documentation pages, see: https://www.pubnub.com/docs/llms-full.txt


# Mobile Push Notifications

Notify online and offline users about appointments, updates, conversations, and more.

:::note Setup required
1. Enable **MOBILE PUSH NOTIFICATIONS** in [Admin Portal](https://admin.pubnub.com/) and configure **APPLE PUSH CREDENTIALS** or **FIREBASE CLOUD MESSAGING**.
2. [Configure Chat SDK](https://www.pubnub.com/docs/chat/chat-sdk/build/configuration#initialize-pubnub) to send/receive push notifications.
:::

## How to set up push notifications

Configure your app to receive notifications via [APNs](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) (iOS) or [FCM](https://firebase.google.com/docs/cloud-messaging) (Android). See the [full documentation](https://www.pubnub.com/docs/general/push/send#configuration) for SDK-specific details.

1. Server-to-server setup: In Admin Portal, enable MOBILE PUSH NOTIFICATIONS and configure APPLE PUSH CREDENTIALS (APNs Authentication Token .p8 file) or FIREBASE CLOUD MESSAGING (Firebase Server Key).
2. Get device token: Register your app with APNs or FCM to get a unique device token for targeting push notifications. See Apple and Google docs.
3. iOS only: Create a bundle ID for your app.
4. Register channels: Associate the device token with PubNub channels. Messages on those channels trigger push notifications. Update registrations anytime during the app lifecycle.
5. Attach payload: Include provider-specific payload structure with each notification message.

## What's improved in Chat SDK

Chat SDK simplifies push notification setup:

### Simple configuration process

Configure push notifications once during [initialization](https://www.pubnub.com/docs/chat/chat-sdk/build/configuration#initialize-pubnub) via `init()`. Separate options control sending and receiving.

### Easy methods for (un)registering channels

Simplified methods wrap [JavaScript SDK methods](https://www.pubnub.com/docs/sdks/javascript/api-reference/mobile-push), eliminating repeated configuration:

* [Register channels](#register-selected-push-channels)
* [List registered channels](#list-all-push-channels)
* [Unregister selected](#unregister-selected-push-channels) or [all](#unregister-all-push-channels) channels

### Automatic payload creation

With `sendPushes` enabled, Chat SDK automatically attaches the correct payload structure to every message.

See this example:

```json
{
  "fcm": {
    "notification": {
      // message author - either the name or ID (if the name is missing)  
      "title": "John Doe",
      // content of the message
      "text": "Hello, this is a test notification!"
    }
  },
  "apns": {
    "configurations": [
      {
        "targets": [
          {
            // for example, "com.apple.iMovie"
            "topic": "com.domainname.applicationname"
          }
        ],
        "title": "John Doe",
        "text": "Hello, this is a test notification!",
        // default iOS sound for notifications
        "sound": "default",
        // name of the channel on which the message was published
        "subtitle": "Chat Room 1"
      }
    ]
  }
}
```

## Register selected push channels

Register channels to receive push notifications for new messages:

* `registerForPush()` - register a single channel (called on `Channel`)
* `registerPushChannels()` - register multiple channels (called on `Chat`)

##### Under the hood

`registerForPush()` and `registerPushChannels()` call Mobile Push Notifications API and the JavaScript SDK [addChannels()](https://www.pubnub.com/docs/sdks/javascript/api-reference/mobile-push#add-device-to-channel) method.

### Method signature

These methods take the following parameters:

* registerForPush() - lets you register a device on a single channel 1channel.registerForPush(): Promise<void>
* registerPushChannels() - lets you register a device on multiple channels at once 1chat.registerPushChannels(channels: string[]): Promise<void>

#### Input

As the `registerForPush()` method is invoked on the `Channel` object, it doesn't need to take any parameters. The channel the method is invoked on is the one registered.

The `registerPushChannels()` method takes the following parameters:

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| channels | string[] | Yes |  | List of channels where you want your device to receive push notifications for sent messages. |

#### Output

| Type | Description |
| --- | --- |
| `Promise<void>` | Method returns no output data. |

### Sample code

* registerForPush() Receive push notifications for messages sent on the support channel. 1// reference the "channel" object2const channel = await chat.getChannel("support")3// register this channel for push notifications4const registeredChannel = channel.registerForPush()
* registerPushChannels() Receive push notifications for messages sent on the support and inicident-management channels. 1const registeredChannel = await chat.registerPushChannels([2 "support",3 "inicident-management"4])

## List all push channels

Get all channels registered for push notifications on the device.

##### Under the hood

`getPushChannels()` calls Mobile Push Notifications API and the JavaScript SDK [listChannels()](https://www.pubnub.com/docs/sdks/javascript/api-reference/mobile-push#list-channels-for-device) method.

### Method signature

This method has the following signature:

```ts
chat.getPushChannels(): Promise<string[]>
```

#### Input

This method doesn't take any parameters.

#### Output

| Type | Description |
| --- | --- |
| `Promise<string[]>` | Returned list of all channels registered to receive push notifications on a given device. |

### Sample code

List all registered channels.

```ts
const allRegisteredChannels = await chat.getPushChannels()
```

## Unregister selected push channels

Stop receiving push notifications for specific channels:

* `unregisterFromPush()` - unregister a single channel (called on `Channel`)
* `unregisterPushChannels()` - unregister multiple channels (called on `Chat`)

##### Under the hood

`unregisterFromPush()` and `unregisterPushChannels()` call Mobile Push Notifications API and the JavaScript SDK [removeChannels()](https://www.pubnub.com/docs/sdks/javascript/api-reference/mobile-push#remove-device-from-channel) method.

### Method signature

These methods take the following parameters:

* unregisterFromPush() - lets you unregister a device from a single channel 1channel.unregisterFromPush(): Promise<void>
* unregisterPushChannels() - lets you unregister a device from multiple channels at once 1chat.unregisterPushChannels(channels: string[]): Promise<void>

#### Input

As the `unregisterFromPush()` method is invoked on the `Channel` object, it doesn't need to take any parameters. The channel the method is invoked on is the one unregistered.

The `unregisterPushChannels()` method takes the following parameters:

| Parameter | Description |
| --- | --- |
| `channels` *Type: `string[]`Default: n/a | List of channels where you want your device to unregister from receiving push notifications for sent messages. |

#### Output

| Type | Description |
| --- | --- |
| `Promise<void>` | Method returns no output data. |

### Sample code

* unregisterFromPush() Stop receiving push notifications for messages sent on the support channel. 1// reference the "channel" object2const channel = await chat.getChannel("support")3// unregister this channel from push notifications4channel.unregisterFromPush()
* unregisterPushChannels() Stop receiving push notifications for messages sent on the support and inicident-management channels. 1await chat.unregisterPushChannels([2 "support",3 "inicident-management"4])

## Unregister all push channels

Disable push notifications for a device on all registered channels using `unregisterAllPushChannels()`.

##### Under the hood

`unregisterAllPushChannels()` calls Mobile Push Notifications API and the JavaScript SDK [deleteDevice()](https://www.pubnub.com/docs/sdks/javascript/api-reference/mobile-push#remove-all-mobile-push-notifications) method.

### Method signature

This method has the following signature:

```ts
chat.unregisterAllPushChannels(): Promise<void>
```

#### Input

This method doesn't take any parameters.

#### Output

| Type | Description |
| --- | --- |
| `Promise<void>` | Method returns no output data. |

### Sample code

Disable push notifications on all registered channels.

```ts
await chat.unregisterAllPushChannels()
```