Руководство по отправке push-уведомлений на устройства Android с помощью Firebase SDK версии 0.6
В этом руководстве показано, как использовать Центры уведомлений Azure и Firebase Cloud Messaging (FCM) SDK версии 0.6 для отправки push-уведомлений в приложение на платформе Android. Следуя инструкциям этого руководства, вы создадите пустое приложение Android, которое получает push-уведомления с помощью Firebase Cloud Messaging.
Полный код для этого руководства можно скачать на сайте GitHub.
При работе с этим руководством вы выполните следующие задачи:
- Создание проекта Android Studio.
- Создание проекта Firebase с поддержкой Firebase Cloud Messaging.
- Создание концентратора.
- Подключение своего приложения к концентратору.
- Тестирование приложения.
Предварительные требования
Для работы с этим учебником необходима активная учетная запись Azure. Если ее нет, можно создать бесплатную пробную учетную запись всего за несколько минут. Дополнительные сведения см. в разделе Бесплатная пробная версия Azure.
Вам также понадобятся следующее.
- Последняя версия Android Studio.
- Android версии 2.3 или более поздней.
- Репозиторий Google версии 27 или более поздней.
- Службы Google Play версии 9.0.2 или более поздней.
Завершение изучения этого учебника является необходимым условием для работы со всеми другими учебниками, посвященными Центрам уведомлений для приложений Android.
Создание проекта Android Studio
- Запустите Android Studio.
- В меню выберите File (Файл), New (Создать), а затем — New Project (Создать проект).
- На странице Choose your project (Выбор проекта) выберите Empty Activity (Пустое действие) и щелкните Далее.
- На странице Configure your project (Настройка проекта) выполните следующие действия.
Введите имя приложения.
Укажите расположение для сохранения файлов проекта.
Нажмите кнопку Готово.
Создание проекта Firebase с поддержкой FCM
Войдите в консоль Firebase. Создайте проект Firebase, если его еще нет.
После создания проекта выберите Add Firebase to your Android app (Добавить Firebase в приложение Android).
Выполните следующие действия на странице Add Firebase to your Android app (Добавление Firebase в приложение Android):
Для Имя пакета Android скопируйте свое значение applicationId в файл приложения build.gradle. В нашем примере он выглядит следующим образом: com.fabrikam.fcmtutorial1app .
Выберите Регистрация приложения.
Выберите Download google-services.json (Загрузить google-services.json), сохраните файл в папку приложения проекта, а затем выберите Далее.
Внесите следующие изменения конфигурации в проект в Android Studio.
В файле Build. gradle уровня проекта ( < проект > /буилд.градле) добавьте следующий оператор в раздел < .
В файле Build. gradle на уровне приложения ( < Project > / < app-Module > /буилд.градле) добавьте следующие инструкции в раздел < .
Добавьте следующую строку в конец файла build.gradle уровня приложения после раздела с зависимостями.
На панели инструментов щелкните Синхронизировать сейчас.
Выберите Далее.
Выберите Пропустить этот шаг.
В консоли Firebase щелкните значок шестеренки возле имени проекта. Выберите пункт Project Settings (Параметры проекта).
Если вы еще не скачали файл google-services.json в папку app проекта Android Studio, это можно сделать на этой странице.
Переключитесь на вкладку Обмен сообщениями в облаке в верхней части.
Скопируйте и сохраните Ключ сервера для последующего использования. Это значение используется для настройки имени центра.
Настройка концентратора
Выберите Все службы в меню слева и щелкните Центры уведомлений в разделе Мобильный. Щелкните значок звездочки рядом с именем службы, чтобы добавить ее в раздел Избранное в меню слева. После добавления Центров уведомлений в Избранное выберите их в меню слева.
На странице Центры уведомлений выберите Добавить на панели инструментов.
На вкладке Основные сведения на странице Центр уведомлений выполните следующие действия:
В поле Подписка выберите имя подписки 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 Tools. Если сервисы Google Play еще не установлены, щелкните Сервисы Google Play, как показано на рисунке ниже. Затем выберите Применить для установки. Запишите путь к пакету SDK. Он вам потребуется в дальнейшем.
Если вы видите диалоговое окно Подтвердить изменение, выберите ОК. Установщик компонентов устанавливает запрошенные компоненты. После установки компонентов выберите Готово.
Выберите ОК, чтобы закрыть диалоговое окно Settings for New Projects (Параметры для новых проектов).
Откройте файл AndroidManifest.xml, а затем добавьте следующий тег для тега приложения.
Затем добавьте библиотеки Центров уведомлений Azure.В файле Build.Gradle для приложений добавьте следующие строки в раздел dependencies.
После раздела dependencies добавьте следующий репозиторий.
Добавление поддержки Google FirebaseВ файле Build.Gradle для приложения добавьте следующие строки в раздел dependencies, если они еще не существуют.
Добавьте следующий подключаемый модуль в конце файла, если он еще не выбран.
На панели инструментов щелкните Синхронизировать сейчас.
Обновите файл AndroidManifest.xmlПосле получения маркера регистрации в FCM используйте его для регистрации в Центрах уведомлений Azure. Регистрация в фоновом режиме выполняется с помощью службы IntentService с именем RegistrationIntentService . Эта служба также обновит ваш маркер регистрации FCM. Также создается класс с именем FirebaseService в качестве подкласса FirebaseMessagingService и переопределяется метод onMessageReceived для получения и обработки уведомлений.
Добавьте приведенное ниже определение службы внутри тега <application> в файле AndroidManifest.xml.
Добавьте следующие разрешения, связанные с FCM, под тегом </application> .
Добавление кодав представлении Project разверните узел app src main java. Щелкните правой кнопкой мыши папку своего пакета в разделе java, выберите New (Создать), а затем выберите класс Java. Укажите NotificationSettings для имени, а затем нажмите кнопку ОК.
Обязательно обновите эти три заполнителя в следующем коде для класса NotificationSettings :
HubListenConnectionString — укажите для центра строку подключения DefaultListenAccessSignature. Чтобы скопировать эту строку подключения, щелкните пункт Политики доступа в своем центре на Портал Azure.
HubName: Используйте имя своего концентратора, которое отображается на странице концентратора на Портал Azure.
Прежде чем продолжить, введите имя и DefaultListenSharedAccessSignature вашего концентратора.
Добавьте еще один новый класс в проект RegistrationIntentService . Этот класс реализует интерфейс IntentService . Он также выполняет обновление маркера FCM и регистрацию в центре уведомлений.
Используйте для этого класса следующий код:
В классе MainActivity добавьте следующие операторы import выше объявления класса.
Добавьте следующие элементы в верхней части класса. Используйте эти поля для проверки доступности служб Google Play в соответствии с рекомендациями Google.
В классе MainActivity добавьте следующий метод проверки доступности сервисов Google Play.
В классе MainActivity добавьте следующий код, который проверяет сервисы Google Play, прежде чем вызывать IntentService . Таким образом вы получите маркер регистрации в FCM и выполните регистрацию в своем центре.
В методе OnCreate класса MainActivity добавьте следующий код, чтобы начать регистрацию при создании действия.
Добавьте эти дополнительные методы в класс MainActivity , чтобы проверять состояние приложения и отображать в нем полученные данные.
ToastNotify Метод использует элемент управления ToastNotify TextView для постоянного отчета о состоянии и уведомлениях в приложении. Вмакете " RES "activity_main.xml макет добавьте следующий идентификатор для этого элемента управления.
Затем добавьте подкласс для получателя, определенного в AndroidManifest.xml. Добавьте еще один новый класс в проект FirebaseService .
Добавьте в начало файла FirebaseService.java следующие операторы импорта:
Добавьте в класс FirebaseService следующий код, чтобы сделать его подклассом класса FirebaseMessagingService .
Этот код переопределяет метод onMessageReceived и сообщает о полученных уведомлениях. Кроме того, он отправляет push-уведомление в диспетчер уведомлений Android с помощью метода sendNotification() . Вызовите метод sendNotification() , если получено уведомление, а приложение не запущено.
в Android Studio в строке меню выберите сборка перестроить Project , чтобы убедиться в отсутствии ошибок в коде. Если появляется сообщение об ошибке о значке ic_launcher , удалите следующую инструкцию из файла AndroidManifest.xml.
Убедитесь, что у вас есть виртуальное устройство для запуска приложения. Если его нет, добавьте его следующим образом:
Запустите приложение на выбранном устройстве и убедитесь, что оно успешно зарегистрировано в концентраторе.
Во время первоначального запуска регистрация может завершиться неудачно, пока не будет вызван метод onTokenRefresh() службы ИД экземпляра. Чтобы заново начать регистрацию в центре уведомлений, обновите страницу.
Проверка отправки уведомления из центра уведомлений
Push-уведомления с Портал Azure можно отправить, выполнив следующие действия.
На портале Azure на странице "Цента уведомлений" для своего центра выберите Тестовая отправка в разделе Устранение неполадок.
В качестве платформы выберите Android.
Нажмите кнопку Отправить. Вы пока не увидите уведомление на устройстве Android, потому что на нем еще не запущено мобильное приложение. После запуска мобильного приложения нажмите еще раз кнопку Send (Отправить), чтобы просмотреть уведомление.
Результат операции можно увидеть в списке внизу.
Вы увидите сообщение уведомления на своем устройстве.
Push-уведомления обычно отправляются во внутренней службе, например мобильных приложениях или службе ASP.NET, с помощью совместимой библиотеки. Если для серверной части библиотека недоступна, для отправки уведомлений также можно напрямую использовать REST API.
Ниже приведен список других учебников, касающихся отправки уведомлений:
- Мобильные приложения Azure. Пример отправки уведомлений с сервера мобильных приложений, интегрированного с Центрами уведомлений, см. в статье Add Push Notifications to your iOS App (Добавление push-уведомлений в приложение iOS).
- ASP.NET: Использование центров уведомлений для отправки push-уведомлений пользователям.
- Пакет SDK для Центров уведомлений Azure для Java: сведения об отправке уведомлений Java см. в статье Использование концентраторов уведомлений из Java. Было протестировано в Eclipse для разработки для Android.
- PHP: Использование Центров уведомлений из PHP.
Перед проверкой отправки push-уведомлений в эмуляторе, убедитесь, что образ эмулятора поддерживает уровень API Google, выбранный для приложения. Если образ не поддерживает собственные API Google, вы можете получить исключение SERVICE_NOT_AVAILABLE .
также убедитесь, что ваша учетная запись Google добавлена в работающий эмулятор сучетными записямиПараметры . В противном случае попытки регистрации в FCM могут привести к исключению AUTHENTICATION_FAILED .
Дальнейшие действия
В этом руководстве вы использовали Firebase Cloud Messaging, для отправки уведомлений на все устройства Android, зарегистрированных в службе. Чтобы узнать, как отправлять push-уведомления на конкретные устройства, перейдите к следующему руководству: