1. Введение
По сравнению с устаревшим API FCM, API FCM HTTP v1 предоставляет более безопасную модель авторизации, использующую кратковременные токены доступа. Шаги по генерации токена доступа для API FCM v1 значительно отличаются от шагов для устаревшего API.
В этом практическом занятии подробно описан процесс настройки клиентской и серверной частей для отправки push-уведомлений в Android-приложение с использованием FCM HTTP v1 API. Особое внимание уделяется ключевому этапу — генерации учетных данных для API v1.
Более подробную информацию можно найти по адресу:
Предварительные требования
- Базовое понимание Java и разработки под Android.
Что вы узнаете
- Подробные шаги по настройке клиентской и серверной части для отправки push-уведомлений в ваше Android-приложение с использованием API FCM HTTP v1.
- Генерация учетных данных для API HTTP v1 с использованием учетных записей служб.
- Отправка тестовых сообщений через API HTTP v1
Что вам понадобится
Последняя стабильная версия Android Studio
Одно из следующих устройств:
- Физическое устройство Android, подключенное к вашему компьютеру.
- Эмулятор Android (см. Запуск приложений в эмуляторе Android )
Среда разработки Java или редактор кода на ваш выбор.
2. Настройка проекта Firebase и приложения Android.
В конце этого практического занятия вы сможете отправлять сообщения в свое приложение с помощью Firebase Cloud Messaging. Перед этим вам необходимо создать проект Firebase. В этом практическом занятии также представлено приложение для Android, содержащее пример кода для интеграции с FCM.
Настройка проекта Firebase
- Выполните шаг 1: Создайте проект Firebase , чтобы создать собственный проект Firebase для этого практического занятия.
настройка приложения для Android
Представленное в этом практическом занятии приложение для Android уже интегрировано с FCM. После запуска оно зарегистрируется на сервере FCM и подпишется на тему. На последующих этапах этого практического занятия вы отправите сообщение в эту тему, и ваше приложение его получит.
- Загрузите пример быстрого запуска Firebase Android .
- Импортируйте проект из репозитория https://github.com/firebase/quickstart-android/tree/master/messaging в Android Studio.
- Зарегистрируйте приложение в консоли Firebase. Имя приложения —
com.google.firebase.quickstart.fcm. Зарегистрируйте это приложение в своем проекте Firebase, следуя инструкциям в разделе «Шаг 2: Регистрация приложения в Firebase ». - Выполните действия, описанные в части 1 "Шаг 3: Добавление файла конфигурации Firebase ", чтобы загрузить файл
google-services.jsonи добавить его в свой проект. Соберите и запустите проект.
3. Настройте сервер приложений.
Теперь, когда ваше приложение настроено, вам потребуется загрузить пример серверного кода для отправки сообщений в ваше приложение с использованием API FCM v1. Этот код загружает учетные данные API (описанные в следующем разделе) для генерации токена доступа. Затем он отправляет сообщение в ваше приложение, используя обмен сообщениями по темам FCM.
- Импортируйте стартовый код сервера, скачав проект с Github . Проект "messaging" — это Java-проект на основе Gradle, зависящий от SDK firebase-admin , который предоставляет функциональность для отправки сообщений.
Более подробную информацию о том, как сервер приложений должен взаимодействовать с FCM, можно найти в документе «Ваша серверная среда и FCM» .
4. Получите учетные данные версии 1.
API FCM HTTP v1 использует кратковременные токены доступа в соответствии с моделью безопасности OAuth2. По сравнению со статическим ключом API, используемым в устаревшем API FCM, кратковременный токен доступа менее подвержен риску утечки учетных данных. В этом разделе подробно описаны шаги по созданию учетных данных для генерации токена доступа, используемого при вызове API.
- Настройте учетную запись службы Firebase, чтобы Firebase Admin SDK мог авторизовывать вызовы к API FCM. Откройте «Настройки проекта» в консоли Firebase и выберите вкладку « Учетные записи служб» . Нажмите «Сгенерировать новый закрытый ключ» , чтобы загрузить фрагмент конфигурации.

- В загруженном проекте Github переименуйте загруженный файл в
service-account.jsonи скопируйте его в папкуmessaging/проекта. - Метод
getAccessToken()(показан ниже) в классеMessaging.javaгенерирует токен OAuth2, действительный в течение 1 часа.
private static String getAccessToken() throws IOException {
GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES));
googleCredentials.refresh();
return googleCredentials.getAccessToken().getTokenValue();
}
- Измените основной метод, добавив следующую строку:
public static void main(String[] args) throws IOException {
System.out.println(getAccessToken());
...
}
- Перейдите в каталог messaging/project в терминале и введите:
./gradlew run -Pmessage=common-message
чтобы вывести токен OAuth2.
Более подробную информацию можно найти в разделе «Авторизация запросов на отправку» .
5. Отправьте сообщение с помощью REST API.
Теперь вы готовы отправить сообщение через API HTTP v1. Выполните следующие шаги:
- Чтобы добавить токен доступа в заголовок HTTP-запроса:
- Добавьте токен в качестве значения заголовка Authorization в формате
Authorization: Bearer <access_token> - Выполните HTTP-запрос к API FCM v1 с помощью curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
Указанное выше $topic_name можно найти в коде Android-приложения, упомянутом в описании проекта Firebase и настройках Android-приложения. По умолчанию это значение равно "weather" .
- После успешной доставки сообщения на экране должно появиться уведомление, похожее на изображение ниже:

6. Заключение
Поздравляем! Вы успешно завершили практическое задание по следующей теме:
- Создайте проект Firebase.
- Интегрируйте Firebase с Android-приложением.
- Создайте учетные данные для API FCM HTTP v1.
- Отправьте сообщение в ваше приложение через API FCM HTTP v1.
Для ознакомления с расширенными функциями FCM полезны следующие справочные материалы: