Как настроить push-уведомления из SDK

Как настроить push-оповещения в FCM

Когда вы отправляете сообщения в чат пользователю, который не находится в вашем мобильном приложении, он получит пуш, как при общении в привычных мессенджерах.

Текущая версия SDK не позволяет отправлять пуши как отдельные сообщения, только привязанные к сообщению в чате. Мы работаем над этим.

1. Включите сервисы Google для вашего приложения

Для работы пушей мы будем использовать Firebase Cloud Messaging (FCM). Если у вас уже есть Firebase-проект с включёнными оповещениями, вы можете пропустить этот шаг.

Придумайте имя для своего проекта и нажмите Create project:

После настройки проекта выберите Cloud Messaging:

Выберите иконку Android:

Укажите package name своего приложения и нажмите Register App:

2. Настройте приложение для получения пушей

Нажмите кнопку Download google-services.json, чтобы загрузить файл конфигурации. Поместите этот файл на уровень вашего приложения.

Нажмите "Далее", а в файле build.gradle уровня приложения кроме прочего добавьте зависимость:

dependencies {
implementation 'com.google.firebase:firebase-messaging:17.+'
}

А также подключите плагин в конце (это важно!) того же файла:

apply plugin: 'com.google.gms.google-services'

Нажмите копку "Далее"

3. Вставьте ваш Server key в настройки Carrot quest

В консоли Firebase выберите свой проект и перейдите в Project settings → Cloud Messaging и скопируйте ключ сервера (Server key):

В Carrot quest перейдите в Настройки → Разработчикам, вставьте ключ в поле и нажмите кнопку Применить ключ:

4. Установите FCM иконку (не обязательно)

Иконку уведомлений можно устанавливать используя следующий метод:

Carrot.setNotificationIcon(notificationIconId)

где notificationIconId - это идентификатор ресурса иконки.

5. Настройки в случае, если вы уже используете FCM

Этот пункт важен для тех приложений, которые уже используют FCM для работы с собственными пушами. Здесь описано, как изменить свою службу FirebaseMessagingService

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived (RemoteMessage remoteMessage) {
        Map<String, String> data = remoteMessage.getData();
        if (data.containsKey(NotificationsConstants.CQ_SDK_PUSH) && "true".equals(data.get(NotificationsConstants.CQ_SDK_PUSH))) {
            Carrot.sendFirebaseNotification(remoteMessage);
        } else {
            //DO HOST LOGIC HERE
        }
    }
}

Советы

Проверьте эти пункты, если у вас возникли проблемы с настройкой FCM:

  • Проверьте, что у вас стоит галочка Отправлять пуш-уведомления (Send a push notification), когда вы отправляете ручное сообщение

  • Проверьте, что на тестовом устройстве не запрещены пуш-уведомления от вашего приложения: Настройки → Уведомления и строка состояния → Диспетчер уведомлений (путь может отличаться в зависимости от версии Android).

  • Проверьте Push Server API key.

  • Проверьте, что вы поместили google-services.json в правильную директорию.