Руководство. Отправка push-уведомлений на устройства Android с помощью пакета SDK Firebase версии 1.0.0-preview1
В этом руководстве показано, как использовать Центры уведомлений Microsoft Azure и обновленный SDK Firebase Cloud Messaging (FCM) версии 1.0.0-preview1 для отправки push-уведомлений в приложение на платформе Android. Следуя инструкциям этого руководства, вы создадите пустое приложение Android, которое получает push-уведомления с помощью Firebase Cloud Messaging (FCM).
Внимание
По состоянию на июнь 2024 года устаревшие API FCM больше не будут поддерживаться и будут прекращены. Чтобы избежать сбоев в службе push-уведомлений, необходимо как можно скорее перейти к протоколу FCM версии 1.
Полный код для этого руководства вы можете скачать на сайте GitHub.
В этом руководстве рассматриваются следующие действия:
- Создание проекта Android Studio.
- Создание проекта Firebase с поддержкой Firebase Cloud Messaging.
- Создание центра уведомлений.
- Подключение своего приложения к концентратору.
- Тестирование приложения.
Необходимые компоненты
Для работы с этим учебником необходима активная учетная запись Azure. Если ее нет, можно создать бесплатную пробную учетную запись всего за несколько минут. Дополнительные сведения см. на странице бесплатной пробной версии Azure.
Примечание.
API Google или Firebase не поддерживаются в регионах Azure Для Китая.
Вам также понадобятся следующее.
- Рекомендуется последняя версия Android Studio.
- Минимальный уровень поддержки — API 19.
Создание проекта Android Studio
Сначала нужно создать проект в Android Studio:
Запустите Android Studio.
В меню выберите Файл, потом Новый, а затем — Новый проект.
На странице Choose your project (Выбор проекта) выберите Empty Activity (Пустое действие) и щелкните Далее.
На странице Настройка проекта выполните следующее:
- Введите имя приложения.
- Укажите расположение для сохранения файлов проекта.
- Выберите Готово.
Создание проекта Firebase с поддержкой FCM
Войдите в консоль Firebase. Создайте проект Firebase, если его еще нет.
После создания проекта выберите Add Firebase to your Android app (Добавить Firebase в приложение Android).
Выполните следующие действия на странице Добавление Firebase в приложение для Android.
Для параметра Имя пакета Android скопируйте свое значение applicationId в файл приложения build.gradle. В нашем примере это значение выглядит следующим образом:
com.fabrikam.fcmtutorial1app
.Выберите Регистрация приложения.
Выберите Download google-services.json (Загрузить google-services.json), сохраните файл в папку приложения проекта, а затем выберите Далее.
В консоли Firebase щелкните значок шестеренки возле имени проекта. Выберите пункт Project Settings (Параметры проекта).
Если вы еще не скачали файл google-services.json в папку app проекта Android Studio, это можно сделать на этой странице.
Переключитесь на вкладку Обмен сообщениями в облаке.
Скопируйте и сохраните Ключ сервера для последующего использования. Это значение используется для настройки имени центра.
Если на вкладке Firebase Cloud Messaging не отображается ключ сервера, выполните следующие действия:
- Выберите меню с тремя точками заголовка API cloud Messaging (Устаревшая версия).
- Перейдите по ссылке "Управление API" в Google Cloud Console.
- В Google Cloud Console нажмите кнопку, чтобы включить API Google Cloud Messaging.
- Подождите несколько минут.
- Вернитесь на вкладку проекта консоли Firebase Cloud Messaging и обновите страницу.
- Узнайте, что заголовок API cloud Messaging изменился на API cloud Messaging (устаревшая версия), а теперь отображает ключ сервера.
Настройка концентратора уведомлений
Войдите на портал Azure.
Выберите Все службы в меню слева и щелкните Центры уведомлений в разделе Мобильный. Щелкните значок звездочки рядом с именем службы, чтобы добавить ее в раздел Избранное в меню слева. После добавления Центров уведомлений в Избранное выберите их в меню слева.
На странице Центры уведомлений выберите Добавить на панели инструментов.
На странице Центры уведомлений выполните следующее:
Введите имя в поле Центр уведомлений.
Введите имя в поле Создать пространство имен. Пространство имен содержит один или несколько центров.
Выберите значение в раскрывающемся списке Расположение. Это значение определяет расположение, в котором создается центр.
В разделе Группа ресурсов создайте группу ресурсов или выберите имеющуюся.
Нажмите кнопку создания.
Последовательно выберите Уведомления (значок колокольчика) и Перейти к ресурсу. Вы также можете обновить список на странице Центры уведомлений и выбрать свой центр.
Выберите Политики доступа в списке. Обратите внимание, что станут доступны две строки подключения. Они потребуются позже для обработки push-уведомлений.
Внимание
Не используйте в приложении политику DefaultFullSharedAccessSignature. Эта политика используется только в серверной части приложения.
Настройка параметров Firebase Cloud Messaging для центра
На панели слева в разделе Параметры, выберите Google (GCM/FCM).
Введите ключ сервера для проекта FCM, сохраненного ранее.
На панели инструментов нажмите кнопку Сохранить.
Портал Azure отобразит сообщение о том, что центр был успешно обновлен. Кнопка Сохранить отключена.
Теперь ваш центр уведомлений настроен для работы с Firebase Cloud Messaging. У вас также есть строки подключения, которые необходимы для отправки уведомлений на устройство и регистрации приложения для получения уведомлений.
Подключение приложения к центру уведомлений
Добавление служб Google Play в проект
В Android Studio в меню выберите Средства, а затем — Диспетчер пакетов SDK.
Выберите целевую версию пакета SDK для Android, который используется в проекте. Затем выберите Show Package Details (Показать сведения о пакете).
Выберите Google APIs (API-интерфейсы Google), если они еще не установлены.
Перейдите на вкладку "Средства SDK". Если вы еще не установили службы Google Play, выберите Службы Google Play, как показано на следующем рисунке. Затем выберите Применить для установки. Запишите путь к пакету SDK. Он вам потребуется в дальнейшем.
Если вы видите диалоговое окно Подтвердить изменение, выберите ОК. Установщик компонентов устанавливает запрошенные компоненты. После установки компонентов выберите Готово.
Выберите ОК, чтобы закрыть диалоговое окно Settings for New Projects (Параметры для новых проектов).
Затем добавьте библиотеки Центров уведомлений Azure.
В файле build.gradle для приложений добавьте следующие строки в раздел dependencies:
implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:1.1.4' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.android.volley:volley:1.2.1'
После раздела dependencies добавьте следующий репозиторий:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://example.io' } } }
Добавление поддержки Google Firebase
Добавьте следующий подключаемый модуль в конце файла, если он еще не выбран.
apply plugin: 'com.google.gms.google-services'
На панели инструментов щелкните Синхронизировать сейчас.
Добавить код
Создайте объект NotificationHubListener, который обрабатывает перехват сообщений из Центров уведомлений Azure.
public class CustomNotificationListener implements NotificationListener { @override public void onNotificationReceived(Context context, RemoteMessage message) { /* The following notification properties are available. */ Notification notification = message.getNotification(); String title = notification.getTitle(); String body = notification.getBody(); Map<String, String> data = message.getData(); if (message != null) { Log.d(TAG, "Message Notification Title: " + title); Log.d(TAG, "Message Notification Body: " + message); } if (data != null) { for (Map.Entry<String, String> entry : data.entrySet()) { Log.d(TAG, "key, " + entry.getKey() + " value " + entry.getValue()); } } } }
В методе
OnCreate
классаMainActivity
добавьте следующий код, чтобы запустить инициализацию Центров уведомлений при создании действия:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NotificationHub.setListener(new CustomNotificationListener()); NotificationHub.start(this.getApplication(), "Hub Name", "Connection-String"); }
В Android Studio в строке меню выберите Сборка, затем выберите Пересобрать проект чтобы убедиться, что в вашем коде нет ошибок. Если появляется сообщение об ошибке о значке ic_launcher, удалите следующую инструкцию из файла AndroidManifest.xml:
android:icon="@mipmap/ic_launcher"
Убедитесь, что у вас есть виртуальное устройство для запуска приложения. Если его нет, добавьте его следующим образом:
Запустите приложение на выбранном устройстве и убедитесь, что оно успешно зарегистрировано в центре.
Примечание.
Во время первоначального запуска регистрация может завершиться неудачно, пока не будет вызван метод
onTokenRefresh()
службы ИД экземпляра. Чтобы заново начать регистрацию в центре уведомлений, обновите страницу.
отправка проверочного уведомления.
Push-уведомления можно отправлять в центр уведомлений из портала Azure следующим образом:
На портале Azure на странице "Центра уведомлений" для своего центра выберите Тестовая отправка в разделе Устранение неполадок.
В качестве платформы выберите Android.
Выберите Отправить. Вы пока не увидите уведомление на устройстве Android, потому что на нем еще не запущено мобильное приложение. После запуска мобильного приложения нажмите еще раз кнопку Send (Отправить), чтобы просмотреть уведомление.
Результат операции можно увидеть в списке в нижней части портала.
Вы увидите сообщение уведомления на своем устройстве.
Push-уведомления обычно отправляются во внутренней службе, например мобильных приложениях или службе ASP.NET, с помощью совместимой библиотеки. Если для серверной части библиотека недоступна, для отправки уведомлений также можно напрямую использовать REST API.
Запуск мобильного приложения в эмуляторе
Перед проверкой отправки push-уведомлений в эмуляторе, убедитесь, что образ эмулятора поддерживает уровень API Google, выбранный для приложения. Если образ не поддерживает собственные API-интерфейсы Google, создается исключение SERVICE_NOT_AVAILABLE.
Кроме того, добавьте учетную запись Google в запущенный эмулятор. Для этого щелкните Settings (Параметры)>Accounts (Учетные записи). В противном случае попытки регистрации в FCM могут привести к исключению AUTHENTICATION_FAILED.
Следующие шаги
В этом руководстве вы использовали Firebase Cloud Messaging, для отправки уведомлений на все устройства Android, зарегистрированных в службе. Чтобы узнать, как отправлять push-уведомления на конкретные устройства, перейдите к следующему руководству:
Ниже приведен список других учебников, касающихся отправки уведомлений:
Мобильные приложения Azure. Пример отправки уведомлений из серверной части мобильных приложений, интегрированной с Центрами уведомлений, см. в статье "Добавление push-уведомлений" в приложение iOS.
ASP.NET. Используйте Центры уведомлений для отправки push-уведомлений пользователям.
Пакет SDK для Центров уведомлений Azure для Java: сведения об отправке уведомлений Java см. в статье Использование концентраторов уведомлений из Java. Было протестировано в Eclipse для разработки для Android.