Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

Настройте SDK

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

Прежде чем вы начнете

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

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

    • Ориентирован на уровень API 19 (KitKat) или выше.
    • Использует Android 4.4 или выше
    • Использует Jetpack (AndroidX) , который включает в себя выполнение следующих требований к версии:
      • com.android.tools.build:gradle v3.2.1 или новее
      • 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 доступными для SDK Firebase, вам нужен подключаемый модуль Gradle сервисов Google ( google-services ).

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

      buildscript {
      
          repositories {
            // Make sure that you have the following two repositories
            google()  // Google's Maven repository
            mavenCentral()  // Maven Central repository
          }
      
          dependencies {
            ...
      
            // Add the dependency for the Google services Gradle plugin
            classpath 'com.google.gms:google-services:4.3.15'
          }
      }
      
      allprojects {
        ...
      
        repositories {
          // Make sure that you have the following two repositories
          google()  // Google's Maven repository
          mavenCentral()  // Maven Central repository
        }
      }
      
    2. В файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle ) добавьте плагин сервисов Google:

      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 ) добавьте зависимость для библиотеки Android Firebase Cloud Messaging. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.

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

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.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:23.1.2'
        implementation 'com.google.firebase:firebase-analytics:21.3.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Используя 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-ktx:23.1.2'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0'
    }
    

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

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

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

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

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

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

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

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

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

Kotlin+KTX

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+KTX

/**
 * 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. Выберите Тест .

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

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

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

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

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

Не ограничивайтесь сообщениями уведомлений

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