- Руководство по отправке push-уведомлений на устройства Android с помощью SDK Firebase версии 1.0.0-preview1
- Предварительные требования
- Создание проекта Android Studio
- Создание проекта Firebase с поддержкой FCM
- Настройка центра уведомлений
- Настройка параметров Firebase Cloud Messaging для центра
- Подключение приложения к центру уведомлений
- Добавление служб Google Play в проект
- Затем добавьте библиотеки Центров уведомлений Azure.
- Добавление поддержки Google Firebase
- Добавление кода
- отправка проверочного уведомления.
- Запуск мобильного приложения в эмуляторе
- Дальнейшие действия
- Android Push Notification Using Firebase and Advanced REST Client
- Notifications Overview
- 1. Notification Message:
- 2. Data Message:
- 3. Messages with both notification and data payload:
- Let’s Code
- Config.java
- MyFirebaseInstanceService.java
- MyFirebaseMessagingService.java
- Advanced REST Client
- Conclusion
- Resources:
Руководство по отправке 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).
Полный код для этого руководства вы можете скачать на сайте GitHub.
В этом руководстве рассматриваются следующие действия:
- Создание проекта Android Studio.
- Создание проекта Firebase с поддержкой Firebase Cloud Messaging.
- Создание центра уведомлений.
- Подключение своего приложения к концентратору.
- Тестирование приложения.
Предварительные требования
Для работы с этим учебником необходима активная учетная запись Azure. Если ее нет, можно создать бесплатную пробную учетную запись всего за несколько минут. Дополнительные сведения см. в разделе Бесплатная пробная версия 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, это можно сделать на этой странице.
Переключитесь на вкладку Обмен сообщениями в облаке.
Скопируйте и сохраните Ключ сервера для последующего использования. Это значение используется для настройки имени центра.
Настройка центра уведомлений
Выберите Все службы в меню слева и щелкните Центры уведомлений в разделе Мобильный. Щелкните значок звездочки рядом с именем службы, чтобы добавить ее в раздел Избранное в меню слева. После добавления Центров уведомлений в Избранное выберите их в меню слева.
На странице Центры уведомлений выберите Добавить на панели инструментов.
На странице Центры уведомлений выполните следующее:
Введите имя в поле Центр уведомлений.
Введите имя в поле Создать пространство имен. Пространство имен содержит один или несколько центров.
Выберите значение в раскрывающемся списке Расположение. Это значение определяет расположение, в котором создается центр.
В разделе Группа ресурсов создайте группу ресурсов или выберите имеющуюся.
Выберите Создать.
Последовательно выберите Уведомления (значок колокольчика) и Перейти к ресурсу. Вы также можете обновить список на странице Центры уведомлений и выбрать свой центр.
Выберите Политики доступа в списке. Обратите внимание, что станут доступны две строки подключения. Они потребуются позже для обработки 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 (Параметры для новых проектов).
Затем добавьте библиотеки Центров уведомлений Azure.
В файле build.gradle для приложений добавьте следующие строки в раздел dependencies:
После раздела dependencies добавьте следующий репозиторий:
Добавление поддержки Google Firebase
Добавьте следующий подключаемый модуль в конце файла, если он еще не выбран.
На панели инструментов щелкните Синхронизировать сейчас.
Добавление кода
Создайте объект NotificationHubListener, который обрабатывает перехват сообщений из Центров уведомлений Azure.
В методе OnCreate класса MainActivity добавьте следующий код, чтобы запустить инициализацию Центров уведомлений при создании действия:
В Android Studio в строке меню выберите Сборка, затем выберите Пересобрать проект чтобы убедиться, что в вашем коде нет ошибок. Если появляется сообщение об ошибке о значке ic_launcher, удалите следующую инструкцию из файла AndroidManifest.xml:
Убедитесь, что у вас есть виртуальное устройство для запуска приложения. Если его нет, добавьте его следующим образом:
Запустите приложение на выбранном устройстве и убедитесь, что оно успешно зарегистрировано в центре.
Во время первоначального запуска регистрация может завершиться неудачно, пока не будет вызван метод 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.
Пакет SDK для Центров уведомлений Azure для Java: сведения об отправке уведомлений Java см. в статье Использование концентраторов уведомлений из Java. Было протестировано в Eclipse для разработки для Android.
Источник
Android Push Notification Using Firebase and Advanced REST Client
Dec 14, 2018 · 7 min read
After spending four days juggling between various resources, writing codes and deleting it again and again, I finally learned how to successfully implement Push Notification in android using Firebase and ARC in a not so complex way. Stick along as I walk you through the process.
So, before we get into coding and stuff let us develop a basic understanding of what are notifications and how do they work.
Notifications Overview
A notification is a message tha t Android displays outside your app’s UI to provide the user with reminders, communication from other people, or other timely information from your app. Users can tap the notification to open your app or take an action directly from the notification.
The design of a notification is determined by system templates — your app simply defines the contents for each portion of the template. Some details of the notification appear only in the expanded view.
The most common parts of a notification are indicated in figure 7 as follows:
For more information about how to create a notification with these features and more, read Create a Notification.
Using Firebase Cloud Messaging you can send three types of messages i.e Notification Message, Data Message, and message with both Notification & Data Payload.
1. Notification Message:
Notification messages are handled by firebase SDK itself. Typically the notification message contains a title, message, icon etc., These messages can be sent from firebase console UI. By sending this kind of messages, you won’t get much control over the notification. The notification will be shown automatically when the app is in the background.
2. Data Message:
Data messages have to be handled by the Android app. You can add this kind of messages if you want to send some additional data along with the notification. But sending these messages through firebase console is not possible. You need to have a server-side logic to send the notification using Firebase API. You need to use data key when sending this message.
3. Messages with both notification and data payload:
A message can also contain both notification and data payload. When these kinds of messages are sent, it will be handled in two scenarios depending upon app state (background/foreground). For these messages, we can use both notification and data keys.
When in the background — Apps receive the notification payload in the notification tray and only handle the data payload when the user taps on the notification.
When in the foreground — App receives a message object with both payloads available.
Let’s Code
First things first, create a new project empty activity and add the Firebase dependencies for Cloud Messaging. You can find the latest dependencies in the Cloud Messaging Android Developer Docs over here. Or you can go the easy-peasy way by adding integrating the Firebase and Cloud messaging directly from the Android Studio. Go to Tools>FIrebase, select Cloud Messaging, and set it up.
Once done with the Firebase setup, we’ll get started with the coding part.
Create two packages, Congif, and Services. Now add the following Java classes:
- Config: Config.java
- Services: MyFirebaseInstanceService.java and MyFirebaseMessagingService.java
Config.java
This class is kind of helper class used to store some useful information retrieved from data being received from the server. It’s optional to create this class but I would suggest you create one to improve understandability of the app. This information is further used in the app at various places like displaying the notification title, notification content, image etc.
Setup this class as follow:
MyFirebaseInstanceService.java
On initial startup of your app, the FCM SDK generates a registration token for the client app instance. If you want to target single devices or create device groups, you’ll need to access this token.
You can easily access the token’s value by creating a new class which extends FirebaseInstanceIdService . In that class, call getToken within onTokenRefresh , and log the value as shown:
The onTokenRefress() callback fires whenever a new token is generated.
Also, add the services to your manifest file in the section:
Now let’s get to the real part.
MyFirebaseMessagingService.java
If you wish to do any message handling beyond receiving notifications on apps in the background we need to create this create this service. It extends FirebaseMesasagingService. This service is necessary to receive notifications in foregrounded apps, to receive data payload, to send upstream messages, and so on.
Let me just explain you stepwise what we’re going to do in this
- First of all, we’ll create an onMessageRecieved() method to handle the incoming messages.
- We’ll perform a check if the message contains some data, if yes, we’ll forward it to next method i.e., getImage().
- In this method retrieve some useful information from the message and add it to the Config class variable. Also, we’ll be fetching an image to be displayed in the notification using the Piccaso library.
- Once the image has been fetched it’ll be passed on to the sendNotification() method and we’ll display the notification.
Don’t forget to add the Picasso library dependency:
Code for the class:
Finally, we’re done with the coding part.
Now we’ll move on to the Advanced REST Client part.
Advanced REST Client
Open up Google Chrome and download Advanced REST Client extension from the Chrome Web Store. ARC is a helper program to create and test custom HTTP requests.
Once downloaded setup the ARC as follows:
Once you have set up the headers, move to the Body tab and set it up as follow:
You can copy the JSON part from below:
This JSON contains the data payload that our message from the server to the device is going to contain and will be used to display the notification. All the keys are self-explanatory except the “to” key.
Let’s focus on this last “to” key-value pair for a while. This key-value pair specifies to whom are we going to send the notifications to. We might be targetting a single person, a segment of users of our app or the entire user base of our app.
In case we want to send the notification to a single user we replace the “ to” value by the token generated by the device of the user.
In case we want to send notifications to all the users just leave the “to” value as it is in the code. Also, we need to add the following line to our MyFirebaseInstanceService.java class:
You can always read more about topic messaging from here.
Now press the POST button in order to receive the notifications.
That’s it. Now, let your users know your presence and keep them engaged to your app. Till the next buzz…
Conclusion
Sending notification to a group of people isn’t as tough a task as it may seem at first. Understanding the working behind and reading Google’s Android Developer Docs surely give you an upper hand but at times might not provide you the just solution you’ve been looking for. I hope this article helped you to ease with the task of sending notifications.
Resources:
Do let me know about any mistakes that I made or any concept that I overlooked. Criticism and improvements are always welcomed.
Источник