Отправьте тестовое сообщение в фоновое приложение

Чтобы начать работу с FCM , создайте простейший вариант использования: отправка тестового уведомления из Notifications composer на устройство разработки, когда приложение находится в фоновом режиме на устройстве. На этой странице перечислены все шаги для достижения этого, от настройки до проверки — она может охватывать шаги, которые вы уже выполнили, если вы настроили клиентское приложение Android для FCM .

Настройте SDK

В этом разделе рассматриваются задачи, которые вы могли выполнить, если вы уже включили другие функции Firebase для своего приложения.

Прежде чем начать

  • Установите или обновите Android Studio до последней версии.

  • Убедитесь, что ваш проект соответствует следующим требованиям (обратите внимание, что к некоторым продуктам могут предъявляться более строгие требования):

    • Целевой уровень API 21 (Lollipop) или выше
    • Использует Android 5.0 или выше.
    • Использует Jetpack (AndroidX) , который включает в себя соответствие следующим требованиям к версии:
      • com.android.tools.build:gradle v7.3.0 или более поздняя версия
      • compileSdkVersion 28 или более поздняя версия
  • Настройте физическое устройство или используйте эмулятор для запуска вашего приложения.
    Обратите внимание, что Firebase SDK с зависимостью от сервисов Google Play требуют, чтобы на устройстве или эмуляторе были установлены сервисы Google Play.

  • Войдите в Firebase, используя свой аккаунт Google.

Если у вас еще нет проекта Android и вы просто хотите опробовать продукт Firebase, вы можете загрузить один из наших примеров быстрого старта .

Создать проект Firebase

Прежде чем вы сможете добавить Firebase в свое приложение Android, вам нужно создать проект Firebase для подключения к вашему приложению Android. Посетите Understand Firebase Projects , чтобы узнать больше о проектах Firebase.

Зарегистрируйте свое приложение в Firebase

Чтобы использовать Firebase в вашем приложении Android, вам необходимо зарегистрировать ваше приложение в вашем проекте Firebase. Регистрация вашего приложения часто называется «добавлением» вашего приложения в ваш проект.

  1. Перейдите в консоль Firebase .

  2. В центре страницы обзора проекта щелкните значок Android ( ) или «Добавить приложение» , чтобы запустить рабочий процесс настройки.

  3. Введите имя пакета вашего приложения в поле «Имя пакета Android» .

  4. (Необязательно) Введите другую информацию о приложении: псевдоним приложения и сертификат подписи отладки SHA-1 .

  5. Нажмите «Зарегистрировать приложение» .

Добавьте файл конфигурации Firebase

  1. Загрузите и добавьте файл конфигурации Firebase Android ( google-services.json ) в свое приложение:

    1. Нажмите «Загрузить google-services.json» , чтобы получить файл конфигурации Firebase Android.

    2. Переместите файл конфигурации в корневой каталог модуля (уровня приложения) вашего приложения.

  2. Чтобы сделать значения в файле конфигурации google-services.json доступными для Firebase SDK, вам понадобится плагин Google Services Gradle ( google-services ).

    1. В файле Gradle корневого уровня (уровня проекта) ( <project>/build.gradle.kts или <project>/build.gradle ) добавьте плагин служб Google в качестве зависимости:

      Kotlin

      plugins {
        id("com.android.application") version "7.3.0" apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id("com.google.gms.google-services") version "4.4.2" apply false
      }

      Groovy

      plugins {
        id 'com.android.application' version '7.3.0' apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id 'com.google.gms.google-services' version '4.4.2' apply false
      }
    2. В файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте плагин служб Google:

      Kotlin

      plugins {
        id("com.android.application")
      
        // Add the Google services Gradle plugin
        id("com.google.gms.google-services")
        // ...
      }

      Groovy

      plugins {
        id 'com.android.application'
      
        // Add the Google services Gradle plugin
        id 'com.google.gms.google-services'
        // ...
      }

Добавьте Firebase SDK в свое приложение

  1. В файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте зависимость для библиотеки Firebase Cloud Messaging для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.

    Для оптимальной работы с Firebase Cloud Messaging мы рекомендуем включить Google Analytics в вашем проекте Firebase и добавить Firebase SDK для Google Analytics в ваше приложение.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.13.0"))
    
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging")
        implementation("com.google.firebase:firebase-analytics")
    }

    Благодаря использованию Firebase Android BoM ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.

    (Альтернатива) Добавьте зависимости библиотеки Firebase без использования BoM

    Если вы решите не использовать Firebase BoM , вам необходимо указать каждую версию библиотеки Firebase в строке ее зависимостей.

    Обратите внимание: если вы используете в своем приложении несколько библиотек Firebase, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.

    dependencies {
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging:24.1.1")
        implementation("com.google.firebase:firebase-analytics:22.4.0")
    }
    Ищете модуль библиотеки, специфичный для Kotlin? Начиная с октября 2023 года ( Firebase BoM 32.5.0) разработчики Kotlin и Java смогут полагаться на основной модуль библиотеки (подробности см. в разделе часто задаваемых вопросов об этой инициативе ).

  2. Синхронизируйте свой проект Android с файлами Gradle.

Доступ к регистрационному токену

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

При первом запуске вашего приложения FCM SDK генерирует токен регистрации для экземпляра клиентского приложения. Если вы хотите нацелиться на отдельные устройства или создать группы устройств, вам нужно будет получить доступ к этому токену, расширив FirebaseMessagingService и переопределив onNewToken .

В этом разделе описывается, как получить токен и как отслеживать изменения токена. Поскольку токен может быть изменен после первоначального запуска, вам настоятельно рекомендуется получить последний обновленный регистрационный токен.

Регистрационный токен может измениться, когда:

  • Приложение восстановлено на новом устройстве
  • Пользователь удаляет/переустанавливает приложение
  • Пользователь очищает данные приложения.

Получить текущий регистрационный токен

Когда вам необходимо получить текущий токен, вызовите FirebaseMessaging.getInstance().getToken() :

Kotlin

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

Мониторинг генерации токенов

Обратный вызов onNewToken срабатывает всякий раз, когда генерируется новый токен.

Kotlin

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration token is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

Java

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(@NonNull String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

Получив токен, вы можете отправить его на сервер своего приложения и сохранить его удобным для вас способом.

Отправить тестовое уведомление

  1. Установите и запустите приложение на целевом устройстве. На устройствах Apple вам нужно будет принять запрос на разрешение на получение удаленных уведомлений.

  2. Убедитесь, что приложение работает в фоновом режиме на устройстве.

  3. В консоли Firebase откройте страницу «Сообщения» .

  4. Если это ваше первое сообщение, выберите Создать свою первую кампанию .

    1. Выберите Уведомления Firebase и нажмите Создать .
  5. В противном случае на вкладке «Кампании» выберите «Новая кампания» , а затем «Уведомления» .

  6. Введите текст сообщения. Все остальные поля необязательны.

  7. Выберите Отправить тестовое сообщение на правой панели.

  8. В поле Добавить токен регистрации FCM введите токен регистрации, полученный вами в предыдущем разделе данного руководства.

  9. Выберите Тест .

После выбора Теста целевое клиентское устройство (с приложением в фоновом режиме) должно получить уведомление.

Для получения более подробной информации о доставке сообщений в ваше приложение см. панель отчетов FCM , которая регистрирует количество отправленных и открытых сообщений на устройствах Apple и Android, а также данные о «показах» (уведомлениях, просмотренных пользователями) для приложений Android.

Следующие шаги

Отправка сообщений в активные приложения

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

Выйдите за рамки уведомлений

Чтобы выйти за рамки уведомлений и добавить в свое приложение другие, более сложные функции, см.: