Руководство. Отправка 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).

Примечание.

Сведения об отмене и миграции Firebase Cloud Messaging см. в статье о миграции Google Firebase Cloud Messaging.

Полный код для этого руководства вы можете скачать на сайте GitHub.

В этом руководстве рассматриваются следующие действия:

  • Создание проекта Android Studio.
  • Создание проекта Firebase с поддержкой Firebase Cloud Messaging.
  • Создание центра уведомлений.
  • Подключение своего приложения к концентратору.
  • Тестирование приложения.

Необходимые компоненты

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

Примечание.

API Google или Firebase не поддерживаются в регионах Azure Для Китая.

Вам также понадобятся следующее.

  • Рекомендуется последняя версия Android Studio.
  • Минимальный уровень поддержки — API 19.

Создание проекта Android Studio

Сначала нужно создать проект в Android Studio:

  1. Запустите Android Studio.

  2. В меню выберите Файл, потом Новый, а затем — Новый проект.

  3. На странице Choose your project (Выбор проекта) выберите Empty Activity (Пустое действие) и щелкните Далее.

  4. На странице Настройка проекта выполните следующее:

    1. Введите имя приложения.
    2. Укажите расположение для сохранения файлов проекта.
    3. Выберите Готово.

    Настройка проекта

Создание проекта Firebase с поддержкой FCM

  1. Войдите в консоль Firebase. Создайте проект Firebase, если его еще нет.

  2. После создания проекта выберите Add Firebase to your Android app (Добавить Firebase в приложение Android).

    Добавление Firebase

  3. Выполните следующие действия на странице Добавление Firebase в приложение для Android.

    1. Для параметра Имя пакета Android скопируйте свое значение applicationId в файл приложения build.gradle. В нашем примере это значение выглядит следующим образом: com.fabrikam.fcmtutorial1app.

      Указание имени пакета

    2. Выберите Регистрация приложения.

  4. Выберите Download google-services.json (Загрузить google-services.json), сохраните файл в папку приложения проекта, а затем выберите Далее.

    Скачивание службы Google

  5. В консоли Firebase щелкните значок шестеренки возле имени проекта. Выберите пункт Project Settings (Параметры проекта).

    Параметры проектов

  6. Если вы еще не скачали файл google-services.json в папку app проекта Android Studio, это можно сделать на этой странице.

  7. Переключитесь на вкладку Обмен сообщениями в облаке.

  8. Скопируйте и сохраните Ключ сервера для последующего использования. Это значение используется для настройки имени центра.

  9. Если на вкладке Firebase Cloud Messaging не отображается ключ сервера, выполните следующие действия:

    1. Выберите меню с тремя точками заголовка API cloud Messaging (Устаревшая версия).
    2. Перейдите по ссылке "Управление API" в Google Cloud Console.
    3. В Google Cloud Console нажмите кнопку, чтобы включить API Google Cloud Messaging.
    4. Подождите несколько минут.
    5. Вернитесь на вкладку проекта консоли Firebase Cloud Messaging и обновите страницу.
    6. Узнайте, что заголовок API cloud Messaging изменился на API cloud Messaging (устаревшая версия), а теперь отображает ключ сервера.

    Снимок экрана портала: включение API cloud Messaging (устаревшая версия).

Настройка концентратора уведомлений

  1. Войдите на портал Azure.

  2. Выберите Все службы в меню слева и щелкните Центры уведомлений в разделе Мобильный. Щелкните значок звездочки рядом с именем службы, чтобы добавить ее в раздел Избранное в меню слева. После добавления Центров уведомлений в Избранное выберите их в меню слева.

  3. На странице Центры уведомлений выберите Добавить на панели инструментов.

    Добавление центра

  4. На странице Центры уведомлений выполните следующее:

    1. Введите имя в поле Центр уведомлений.

    2. Введите имя в поле Создать пространство имен. Пространство имен содержит один или несколько центров.

    3. Выберите значение в раскрывающемся списке Расположение. Это значение определяет расположение, в котором создается центр.

    4. В разделе Группа ресурсов создайте группу ресурсов или выберите имеющуюся.

    5. Нажмите кнопку создания.

      Создание концентратора

  5. Последовательно выберите Уведомления (значок колокольчика) и Перейти к ресурсу. Вы также можете обновить список на странице Центры уведомлений и выбрать свой центр.

    Выбор центра

  6. Выберите Политики доступа в списке. Обратите внимание, что станут доступны две строки подключения. Они потребуются позже для обработки push-уведомлений.

    Политики доступа

    Внимание

    Не используйте в приложении политику DefaultFullSharedAccessSignature. Эта политика используется только в серверной части приложения.

Настройка параметров Firebase Cloud Messaging для центра

  1. На панели слева в разделе Параметры, выберите Google (GCM/FCM).

  2. Введите ключ сервера для проекта FCM, сохраненного ранее.

  3. На панели инструментов нажмите кнопку Сохранить.

    Ключ сервера

  4. Портал Azure отобразит сообщение о том, что центр был успешно обновлен. Кнопка Сохранить отключена.

Теперь ваш центр уведомлений настроен для работы с Firebase Cloud Messaging. У вас также есть строки подключения, которые необходимы для отправки уведомлений на устройство и регистрации приложения для получения уведомлений.

Подключение приложения к центру уведомлений

Добавление служб Google Play в проект

  1. В Android Studio в меню выберите Средства, а затем — Диспетчер пакетов SDK.

  2. Выберите целевую версию пакета SDK для Android, который используется в проекте. Затем выберите Show Package Details (Показать сведения о пакете).

    Диспетчер пакетов SDK

  3. Выберите Google APIs (API-интерфейсы Google), если они еще не установлены.

    Программные интерфейсы

  4. Перейдите на вкладку "Средства SDK". Если вы еще не установили службы Google Play, выберите Службы Google Play, как показано на следующем рисунке. Затем выберите Применить для установки. Запишите путь к пакету SDK. Он вам потребуется в дальнейшем.

    Службы Google Play

  5. Если вы видите диалоговое окно Подтвердить изменение, выберите ОК. Установщик компонентов устанавливает запрошенные компоненты. После установки компонентов выберите Готово.

  6. Выберите ОК, чтобы закрыть диалоговое окно Settings for New Projects (Параметры для новых проектов).

Затем добавьте библиотеки Центров уведомлений Azure.

  1. В файле 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'
    
  2. После раздела dependencies добавьте следующий репозиторий:

    repositories {
       maven {
          url "https://dl.bintray.com/microsoftazuremobile/SDK"
       }
    }
    

Добавление поддержки Google Firebase

  1. Добавьте следующий подключаемый модуль в конце файла, если он еще не выбран.

    apply plugin: 'com.google.gms.google-services'
    
  2. На панели инструментов щелкните Синхронизировать сейчас.

Добавить код

  1. Создайте объект 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());
              }
          }
       }
    }
    
  2. В методе 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");
    
    }
    
  3. В Android Studio в строке меню выберите Сборка, затем выберите Пересобрать проект чтобы убедиться, что в вашем коде нет ошибок. Если появляется сообщение об ошибке о значке ic_launcher, удалите следующую инструкцию из файла AndroidManifest.xml:

    android:icon="@mipmap/ic_launcher"
    
  4. Убедитесь, что у вас есть виртуальное устройство для запуска приложения. Если его нет, добавьте его следующим образом:

    1. Диспетчер устройств

    2. Виртуальные устройства

    3. Запустите приложение на выбранном устройстве и убедитесь, что оно успешно зарегистрировано в центре.

      Регистрация устройства

      Примечание.

      Во время первоначального запуска регистрация может завершиться неудачно, пока не будет вызван метод onTokenRefresh() службы ИД экземпляра. Чтобы заново начать регистрацию в центре уведомлений, обновите страницу.

отправка проверочного уведомления.

Push-уведомления можно отправлять в центр уведомлений из портала Azure следующим образом:

  1. На портале Azure на странице "Центра уведомлений" для своего центра выберите Тестовая отправка в разделе Устранение неполадок.

  2. В качестве платформы выберите Android.

  3. Выберите Отправить. Вы пока не увидите уведомление на устройстве Android, потому что на нем еще не запущено мобильное приложение. После запуска мобильного приложения нажмите еще раз кнопку Send (Отправить), чтобы просмотреть уведомление.

  4. Результат операции можно увидеть в списке в нижней части портала.

    Отправка тестового уведомления

  5. Вы увидите сообщение уведомления на своем устройстве.

Push-уведомления обычно отправляются во внутренней службе, например мобильных приложениях или службе ASP.NET, с помощью совместимой библиотеки. Если для серверной части библиотека недоступна, для отправки уведомлений также можно напрямую использовать REST API.

Запуск мобильного приложения в эмуляторе

Перед проверкой отправки push-уведомлений в эмуляторе, убедитесь, что образ эмулятора поддерживает уровень API Google, выбранный для приложения. Если образ не поддерживает собственные API-интерфейсы Google, создается исключение SERVICE_NOT_AVAILABLE.

Кроме того, добавьте учетную запись Google в запущенный эмулятор. Для этого щелкните Settings (Параметры)>Accounts (Учетные записи). В противном случае попытки регистрации в FCM могут привести к исключению AUTHENTICATION_FAILED.

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

В этом руководстве вы использовали Firebase Cloud Messaging, для отправки уведомлений на все устройства Android, зарегистрированных в службе. Чтобы узнать, как отправлять push-уведомления на конкретные устройства, перейдите к следующему руководству:

Ниже приведен список других учебников, касающихся отправки уведомлений: