В этом посте рассказывается, как отправлять push-уведомления в Android. Раньше нас использовали для отправки push-уведомлений в Android с помощью службы сообщений Google Cloud. Недавно был представлен новый способ отправки push-данных с использованием Firebase. Даже если основные принципы остаются прежними, Firebase представила некоторые интересные новые функции. Firebase поддерживает другие сервисы, такие как:
- Аутентификация
- Удаленная настройка
- Отчет о сбое
В этом посте шаг за шагом будет рассказано, как отправить push-уведомление из консоли Firebase в приложение.
Что такое push-уведомление?
Прежде чем углубляться в детали того, как отправлять уведомления в Android, полезно уточнить, что такое push-уведомление. Используя push-уведомление Android, наше приложение может уведомлять пользователя о новых событиях. Это происходит, даже если наше приложение не работает на переднем плане. Используя этот сервис, мы можем отправлять данные с нашего сервера в наше приложение всякий раз, когда происходит новое событие. Эта парадигма гораздо более эффективна, если вы продолжаете подключаться к серверу (метод pull), чтобы узнать, есть ли новые события.
Используя push-уведомления, мы можем держать пользователя в курсе событий, не разряжая аккумулятор смартфона. Когда пользователь получает уведомление, оно отображается в виде пользовательского значка в строке состояния. При отправке push-уведомления используются разные парадигмы:
Сообщение на одно устройство
Сообщение в теме (отправка одного и того же сообщения на несколько устройств, подписанных на определенную тему. Это реализует модель издатель / подписчики)
Сообщение группе (несколько устройств, использующих один и тот же ключ, который используется для идентификации смартфона)
Настроить проект облачных сообщений Firebase
Время начинать! Создайте учетную запись для доступа к консоли Firebase и определите проект:
а потом:
Как только вы создали свой проект, вы должны добавить имя пакета вашего приложения. Будьте внимательны, используя одно и то же имя пакета в Android Studio и в консоли Firebase:
В конце этого процесса ваш проект настроен на Firebase, и вы готовы разработать приложение для Android. В конце вы получите файл json, который вам нужно скопировать на уровне модуля приложения.
Как реализовать push-уведомление Android с Firebase
Теперь мы можем разработать приложение для Android, интегрированное с Firebase. В качестве первого шага мы должны добавить Firebase в наше приложение и изменить файлы Gradle. На уровне проекта давайте изменим Gradle Fille как:
| 1 2 3 4 5 6 7 8 9 | buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.1.3'        classpath 'com.google.gms:google-services:3.0.0'    }} | 
и в имени модуля (обычно с именем app):
| 1 2 3 4 5 6 7 8 9 | ....dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:24.2.0'    compile 'com.google.firebase:firebase-messaging:9.4.0'}apply plugin: 'com.google.gms.google-services' | 
 В этом случае мы добавили зависимость обмена сообщениями.  После настройки файлов Gradle следующим шагом будет создание нашего приложения.  В MainActivity мы добавляем кнопку для получения текущего token .  Этот токен важен, потому что мы используем его в консоли Firebase, чтобы установить правильное целевое устройство. 
  Предположим, мы уже определили макет, содержащий кнопку, в классе Activity: 
| 01 02 03 04 05 06 07 08 09 10 11 | Button btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(newView.OnClickListener() {    @Override    publicvoidonClick(View view) {      String tkn = FirebaseInstanceId.getInstance().getToken();      Toast.makeText(MainActivity.this, "Current token ["+tkn+"]",                     Toast.LENGTH_LONG).show();      Log.d("App", "Token ["+tkn+"]");     }   }); } | 
  Обратите внимание, что мы использовали синглтон FirebaseInstanceId, чтобы получить текущий экземпляр, а затем текущий токен.  Может потребоваться некоторое время, прежде чем токен будет сгенерирован, поэтому вы можете получить нулевое значение в начале. 
  Более того, мы можем отслеживать процесс создания токена и получать уведомления, когда он доступен, используя пользовательский сервис, расширяющий FirebaseInstanceIdService .  В этом случае мы переопределяем метод onTokenRefresh . 
| 1 2 3 4 5 6 7 8 | publicclassFireIDService extendsFirebaseInstanceIdService {    @Override    publicvoidonTokenRefresh() {        String tkn = FirebaseInstanceId.getInstance().getToken();        Log.d("Not","Token ["+tkn+"]");    }} | 
  В этом методе мы просто регистрируем токен, но его можно использовать в реальном приложении для отправки токена на сервер, чтобы сервер его сохранял. 
  Не забудьте объявить этот сервис в Manifest.xml . 
| 1 2 3 4 5 6 7 | .. <service     android:name=".FireIDService">     <intent-filter>        <actionandroid:name="com.google.firebase.INSTANCE_ID_EVENT"/>     </intent-filter> </service> | 
В конце мы реализуем сервис, который обрабатывает входящие push-уведомления:
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | publicclassFireMsgService extendsFirebaseMessagingService {    @Override    publicvoidonMessageReceived(RemoteMessage remoteMessage) {        super.onMessageReceived(remoteMessage);        Log.d("Msg", "Message received ["+remoteMessage+"]");        // Create Notification        Intent intent = newIntent(this, MainActivity.class);        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        PendingIntent pendingIntent = PendingIntent.getActivity(this, 1410,                         intent, PendingIntent.FLAG_ONE_SHOT);        NotificationCompat.Builder notificationBuilder = new                 NotificationCompat.Builder(this)                .setSmallIcon(R.drawable.ic_stat_name)                .setContentTitle("Message")                .setContentText(remoteMessage.getNotification().getBody())                .setAutoCancel(true)                .setContentIntent(pendingIntent);    }} | 
  В методе onMessageReceived мы просто показываем уведомление, содержащее отправленное сообщение. 
  Запустив приложение, мы получим результат, показанный на видео ниже: 
В конце этой статьи вы узнали, как использовать push-уведомления в Android с Firebase.
| Ссылка: | Push-уведомление в Android с помощью облачных сообщений Firebase от нашего партнера JCG Франческо Аццолы в блоге Surviving w / Android . | 



