Чтобы начать работу с FCM , разработайте самый простой вариант использования: отправку тестового уведомления из композитора уведомлений на устройство разработки, когда приложение находится на устройстве в фоновом режиме. На этой странице перечислены все шаги для достижения этой цели: от настройки до проверки. Здесь могут быть описаны шаги, которые вы уже выполнили, если вы настроили клиентское приложение Android для FCM .
Настройте SDK
В этом разделе описаны задачи, которые вы могли выполнить, если вы уже включили другие функции Firebase для своего приложения.
Прежде чем начать
Установите или обновите Android Studio до последней версии.
Убедитесь, что ваш проект соответствует этим требованиям (обратите внимание, что к некоторым продуктам могут предъявляться более строгие требования):
- Целевой уровень API 19 (KitKat) или выше.
- Использует Android 4.4 или выше.
- Использует 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. Посетите раздел «Понимание проектов Firebase» , чтобы узнать больше о проектах Firebase.
Зарегистрируйте свое приложение в Firebase
Чтобы использовать Firebase в своем приложении для Android, вам необходимо зарегистрировать свое приложение в проекте Firebase. Регистрация вашего приложения часто называется «добавлением» вашего приложения в проект.
Перейдите в консоль Firebase .
В центре страницы обзора проекта щелкните значок Android (
) или «Добавить приложение» , чтобы запустить рабочий процесс установки.Введите имя пакета вашего приложения в поле имени пакета Android .
Имя пакета уникально идентифицирует ваше приложение на устройстве и в Google Play Store.
Имя пакета часто называют идентификатором приложения .
Найдите имя пакета вашего приложения в файле Gradle вашего модуля (на уровне приложения), обычно
app/build.gradle
(пример имени пакета:com.yourcompany.yourproject
).Имейте в виду, что значение имени пакета чувствительно к регистру, и его нельзя изменить для этого приложения Firebase Android после его регистрации в вашем проекте Firebase.
(Необязательно) Введите другую информацию о приложении: псевдоним приложения и сертификат подписи отладки SHA-1 .
Псевдоним приложения : внутренний удобный идентификатор, который виден только вам в консоли Firebase
Сертификат подписи отладки SHA-1 : хэш SHA-1 требуется для Firebase Authentication (при использовании входа в Google или входа по номеру телефона ) и Firebase Dynamic Links .
Нажмите Зарегистрировать приложение .
Добавьте файл конфигурации Firebase
Загрузите и добавьте файл конфигурации Firebase Android (
) в свое приложение:google-services.json Нажмите «Загрузить google-services.json» , чтобы получить файл конфигурации Firebase Android.
Переместите файл конфигурации в корневой каталог модуля (на уровне приложения) вашего приложения.
Файл конфигурации Firebase содержит уникальные, но несекретные идентификаторы вашего проекта. Чтобы узнать больше об этом файле конфигурации, посетите раздел «Понимание проектов Firebase» .
Вы можете снова загрузить файл конфигурации Firebase в любое время.
Убедитесь, что к имени файла конфигурации не добавлены дополнительные символы, например
(2)
.
Чтобы сделать значения в вашем файле конфигурации
доступными для Firebase SDK, вам понадобится плагин Gradle сервисов Google (google-services.json google-services
).В файле 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 }
В файле 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 в свое приложение
В файле Gradle вашего модуля (на уровне приложения) (обычно
<project>/<app-module>/build.gradle.kts
или<project>/<app-module>/build.gradle
) добавьте зависимость для Firebase Cloud Messaging Библиотека 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.3.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.
Ищете библиотечный модуль, специфичный для Kotlin? Начиная с октября 2023 года ( Firebase BoM 32.5.0) от основного модуля библиотеки могут зависеть как разработчики Kotlin, так и Java (подробнее см. FAQ по этой инициативе ).(Альтернатива) Добавить зависимости библиотеки 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.0.1") implementation("com.google.firebase:firebase-analytics:22.1.0") }
Синхронизируйте проект Android с файлами Gradle.
Сборки Gradle, использующие плагин Android Gradle (AGP) v4.2 или более ранней версии, должны включить поддержку Java 8. В противном случае при добавлении Firebase SDK в этих проектах Android произойдет сбой сборки.
Чтобы исправить этот сбой сборки, вы можете воспользоваться одним из двух вариантов:
- Добавьте перечисленные
compileOptions
из сообщения об ошибке в файлbuild.gradle.kts
илиbuild.gradle
уровня приложения . - Увеличьте
minSdk
для вашего проекта Android до 26 или выше.
Узнайте больше об этом сбое сборки в этом FAQ .
- Добавьте перечисленные
Доступ к регистрационному токену
Чтобы отправить сообщение на определенное устройство, вам необходимо знать токен регистрации этого устройства. Поскольку для завершения этого руководства вам потребуется ввести токен в поле консоли уведомлений, обязательно скопируйте токен или надежно сохраните его после его получения.
При первом запуске вашего приложения пакет 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); }
После получения токена вы можете отправить его на сервер приложений и сохранить его предпочтительным способом.
Отправить тестовое уведомление
Установите и запустите приложение на целевом устройстве. На устройствах Apple вам необходимо принять запрос на разрешение на получение удаленных уведомлений.
Убедитесь, что приложение работает в фоновом режиме на устройстве.
В консоли Firebase откройте страницу «Сообщения» .
Если это ваше первое сообщение, выберите «Создать первую кампанию» .
- Выберите «Уведомительные сообщения Firebase» и выберите «Создать» .
В противном случае на вкладке «Кампании» выберите «Новая кампания» , а затем «Уведомления» .
Введите текст сообщения. Все остальные поля являются необязательными.
Выберите Отправить тестовое сообщение на правой панели.
В поле « Добавить регистрационный токен FCM» введите регистрационный токен, который вы получили в предыдущем разделе этого руководства.
Выберите Тест .
После того, как вы выберете «Тест» , целевое клиентское устройство (с приложением в фоновом режиме) должно получить уведомление.
Для получения более подробной информации о доставке сообщений в ваше приложение см. панель отчетов FCM , которая записывает количество сообщений, отправленных и открытых на устройствах Apple и Android, а также данные о «показах» (уведомлениях, которые видят пользователи) для приложений Android.
Следующие шаги
Отправка сообщений в приложения на переднем плане
После того как вы успешно отправили уведомления, пока ваше приложение работает в фоновом режиме, см. раздел «Получение сообщений в приложении Android», чтобы начать отправку сообщений в приложения, работающие на переднем плане.
Выйдите за рамки уведомлений
Чтобы выйти за рамки уведомлений и добавить в приложение другое, более продвинутое поведение, см.: