Отправка push-уведомлений Android с помощью Firebase Cloud Messaging

Если ваше приложение будет успешным, то вам необходимо поддерживать интерес пользователя с течением времени, а уведомления — важный способ чтобы заинтересовать вашу аудиторию.

Представляя пользователю своевременное и актуальное уведомление в точно в нужный момент , вы можете вернуть его блуждающий интерес и привлечь его обратно в ваше приложение.

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

В этой статье я покажу вам, как быстро и легко отправлять уведомления с внешнего сервера с помощью Firebase Cloud Messaging (FCM). После того, как мы добавили поддержку FCM в проект и отправили несколько тестовых уведомлений, я покажу вам, как создавать более привлекательные уведомления, используя Firebase Console для таргетинга на определенные разделы вашей аудитории, включая отправку уведомления на одно устройство. , используя уникальный идентификатор токена.

Что такое Firebase Cloud Messaging?

FCM — это бесплатное кроссплатформенное решение для обмена сообщениями, которое позволяет отправлять push-уведомления вашей аудитории , не беспокоясь о коде сервера. Используя FCM вместе с Firebase Notifications Composer (как показано на следующем снимке экрана), вы можете создавать уведомления, нацеленные на очень определенные разделы вашей пользовательской базы, часто без необходимости писать какой-либо специальный код.

Хотя это выходит за рамки данного руководства, вы также можете использовать FCM для восходящих уведомлений, когда FCM получает сообщение из клиентского приложения или чтобы уведомить ваше приложение о появлении новых данных, доступных для загрузки. Таким образом, вы можете гарантировать, что связь между вашим сервером приложения и клиентским приложением происходит только при необходимости, что намного эффективнее, чем клиентское приложение, связывающееся с сервером через регулярные промежутки времени, на случай, если могут появиться некоторые новые данные.

Поскольку FCM является частью Firebase, он также хорошо работает с другими службами Firebase. Освоив основы FCM, вы можете использовать A/B-тестирование, чтобы определить, какие уведомления являются наиболее эффективными, или использовать Firebase Predictions, чтобы применить мощное машинное обучение ко всем аналитическим данным, сгенерированным из ваших различных кампаний FCM.

FCM поддерживает два типа сообщений:

  • Уведомляющие сообщения. Клиентское приложение будет вести себя по-разному в зависимости от того, он находится в фоновом или переднем плане, когда получает сообщение FCM. Если ваше приложение работает в фоновом режиме, Firebase SDK автоматически обработает сообщение и отобразит его как уведомление на панели задач устройства.. Поскольку система Android создает уведомления для вас, это один из самых простых способов отправки push-уведомлений вашим пользователям. Если ваше приложение получает сообщение FCM, когда оно находится на переднем плане, система не будет обрабатывать это уведомление автоматически, оставляя вас обрабатывать сообщение в обратном вызове onMessageReceived () вашего приложения. Мы рассмотрим onMessageReceived () позже в этом руководстве, а пока просто имейте в виду, что если ваше приложение получает сообщение, когда оно находится на переднем плане, то по умолчанию это сообщение не будет отображаться для пользователя.
  • Сообщения с данными. В отличие от уведомлений, вы можете использовать сообщения с данными для отправки настраиваемых элементов данных в клиентское приложение. Однако FCM накладывает ограничение на эти сообщения данных в 4 КБ, поэтому, если ваша полезная нагрузка превышает 4 КБ, вам нужно будет получить дополнительные данные с помощью WorkManager или API JobScheduler.

В этом руководстве мы сосредоточимся на сообщениях с уведомлениями.

А как насчет Google Cloud Messaging?

Если вы используете серверные и клиентские API Google Cloud Messaging (GCM), то есть плохие новости: эта служба уже устарела, и Google планирует отключить » большинство сервисов GCM в апреле 2019 года. Если вы все еще используете GCM, вам следует начать миграцию своих проектов в FCM прямо сейчас, и вы должны завершить миграцию к апрелю 2019 года.

Добавление Firebase в ваш Проект Android

Давайте посмотрим, насколько легко добавить базовую поддержку FCM в ваше приложение, а затем использовать ее для отправки push-уведомлений вашим пользователям.

Поскольку FCM является службы Firebase, вам необходимо добавить Firebase в свое приложение:

  • Перейдите к Firebas e Консоль.
  • Выберите «Добавить проект» и дайте вашему проекту имя.
  • Прочтите условия. Если вы готовы продолжить, выберите «Я принимаю…», а затем «Создать проект».
  • Выберите «Добавить Firebase в свое приложение для Android».
  • Введите имя пакета проекта и нажмите «Зарегистрировать приложение».
  • Выберите «Загрузить google-services.json».
  • В Android Studio перетащите google-services.json в каталог «app» вашего проекта.
  • Откройте файл build.gradle на уровне проекта и добавьте следующее:
  classpath 'com.google.gms: google-services: 4.0.1' 
  • Откройте файл build.gradle на уровне приложения и добавьте плагин служб Google, а также зависимости для Firebase Core и FCM:
//Добавить плагин служб Google//применить плагин: 'com.google.gms.google-services' ……… зависимости {реализация fileTree (  dir: 'libs', include: ['* .jar'])//Добавить Firebase Core//реализацию 'com.google.firebase: firebase-core: 16.0.1'//Добавить FCM//реализацию 'com.google  .firebase: firebase-messaging: 17.3.4 '
  • Когда предложено, синхронизируйте ваши изменения.
  • Затем вам нужно сообщить консоли Firebase, что вы успешно добавили Firebase в свой проект. Установите приложение на физический смартфон или планшет Android или виртуальное устройство Android (AVD).
  • Вернувшись в консоль Firebase, выберите «Запустить приложение, чтобы проверить установку».
  • Как только Firebase обнаружит ваше приложение, вы увидите сообщение «Поздравляем». Выберите «Перейти к консоли».

Отправка вашего первого push-уведомления с помощью Firebase

И готово! Теперь вы можете отправить своим пользователям push-уведомление, и это уведомление появится на панели задач устройства (пока предположим, что ваше приложение не находится на переднем плане, когда сообщение доставляется).

Вы создаете уведомления FCM с помощью Notifications Composer, который доступен через Firebase Console:

  • Убедитесь, что ваше приложение установлено и работает в фоновом режиме, и что на вашем устройстве есть активное подключение к Интернету.
  • В консоли Firebase выберите «Cloud Messaging» в меню слева.

  • Выберите «Отправить первое сообщение».
  • Дайте вашему сообщению заголовок и основной текст, а затем нажмите «Далее».

  • Откройте раскрывающийся список «Выбрать приложение» и выберите свое приложение из списка. Этот раздел также включает некоторые расширенные параметры, которые можно использовать для создания целевых уведомлений на основе таких факторов, как версия приложения, языковой стандарт устройства и время последнего взаимодействия пользователя с вашим приложением. Мы не будем использовать какие-либо из этих параметров в нашем тестовом уведомлении, но если вы хотите увидеть, что доступно, выберите «и…» и изучите следующий раскрывающийся список.

  • Закончив редактирование этого раздела, нажмите «Далее».
  • Предполагая, что вы хотите отправить это сообщение немедленно, откройте раскрывающийся список «Отправить подходящим пользователям» и выберите «Сейчас».
  • В правом нижнем углу экрана щелкните «Опубликовать».
  • Проверьте всю информацию в следующем всплывающем окне и, если вы согласны продолжить, выберите «Опубликовать».

Через несколько секунд все клиентские устройства, на которые вы нацелились, должны получать это уведомление на панели задач.

В большинстве случаев уведомления FCM доставляются немедленно, но иногда доставка сообщения может занять несколько минут, так что не паникуйте, если ваше уведомление задерживается.

Установка сом e цели: события конверсии уведомлений

При создании уведомления вы обычно имеете в виду цель — вернуть ли это пользователей в ваше приложение, убедить их потратиться на покупку в приложении. , или просто открыв уведомление.

Вы можете назначить цель своему уведомлению, используя Notification Composer, а затем отслеживать эффективность этого уведомления на панели управления отчетами FCM.

Чтобы установить цель, нажмите , чтобы развернуть раздел «События преобразования» в Navigation Composer, затем откройте соответствующий раскрывающийся список и выберите одно из доступных событий преобразования.

Было ли ваше уведомление успешным?

После отправки сообщения уведомления вы можете проанализировать его производительность на панели управления отчетами FCM, которая должна загружаться автоматически каждый раз, когда вы отправляете новое сообщение, или вы можете получить доступ к панели управления напрямую.

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

Вы также можете выбрать любое сообщение в этом списке, чтобы увидеть отправку, откройте d данные конверсии в виде графика. Если вы установите какие-либо цели конверсии, то здесь же вы найдете статистику, относящуюся к этим целям.

Что делать, если мое приложение находится на переднем плане?

Уведомления FCM ведут себя по-разному в зависимости от состояния клиентского приложения.

По умолчанию ваше приложение не будет отображать какие-либо сообщения FCM, которые оно получает, пока оно находится на переднем плане, поэтому, когда вы отправляете сообщение, нет гарантии, что ваши пользователи действительно увидят это сообщение.

Чтобы действовать в соответствии с сообщениями, которые ваше приложение получает, пока оно находится на переднем плане , вам необходимо расширить FirebaseMessagingService, переопределить метод onMessageReceived и затем получить содержимое сообщения. используя getNotification или getData, в зависимости от того, работаете ли вы с данными или сообщениями уведомлений, или с обоими.

Создайте новый класс Java с именем «MyFirebaseMessagingService», а затем добавьте следующее:

 открытый класс MyFirebaseMessa  gingService расширяет FirebaseMessagingService {@Override public void onMessageReceived (сообщение RemoteMessage) {super.onMessageReceived (remoteMessage); 

Вам также потребуется создать объект уведомления. Это ваш шанс настроить уведомление, например, выбрать звук, который должен воспроизводиться, когда пользователь получит это уведомление, или применить собственный значок уведомления. Вам также потребуется получить содержимое из сообщения данных или уведомления, например:

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder (this, "channel_id") .setContentTitle (remoteMessage.getNotification  () .getTitle ()) .setContentText (remoteMessage.getNotification (). getBody ()) .setPriority (NotificationCompat.PRIORITY_DEFAULT) .setStyle (новый NotificationCompat.BigTextStyle ()) .setSound (RingtoneManager.ICTODEFaultUI).  setSmallIcon (R.mipmap.ic_launcher). setAutoCancel (истина);  NotificationManager notificationManager = (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE);  notificationManager.notify (0, notificationBuilder.build ());  }} 

Создав свою службу, не забывайте чтобы добавить его в свой манифест:

      

Теперь каждый раз, когда ваше приложение получает сообщение FCM, пока оно находится на переднем плане, оно будет доставлено обработчику onMessageReceived (), и ваше приложение затем примет действие, определенное вами, такое как публикация уведомления или обновление содержимого вашего приложения.

Более привлекательные уведомления: нацеливание на ваших пользователей

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

Вы можете использовать Notification Composer для отправки разных уведомлений в разные части вашего пользовательская база. Перейдите в Компоновщик уведомлений и создайте свое уведомление как обычно, но в разделе «Цель» нажмите «и». Это дает вам доступ к новому раскрывающемуся списку, содержащему следующие параметры:

  • Версия. Это позволяет вам настраивать таргетинг или исключать запущенные устройства конкретные версии вашего приложения. Например, вы можете отправлять уведомления людям, использующим бесплатную версию, предлагая им перейти на премиум-версию вашего приложения.
  • Language. Вы можете использовать это настройка таргетинга или исключения различных языков и локалей, которые поддерживает ваше приложение, например создание уведомлений, адаптированных для разных часовых поясов или языков.
  • Аудитория (и) пользователей. Это позволяет настраивать таргетинг или исключать различные сегменты вашей аудитории. Например, вы можете использовать эту настройку, чтобы соблазнить людей, у которых есть опыт совершения покупок в приложении, предлагая им скидку или привлекая их внимание ко всем удивительным новым продуктам, которые вы только что выпустили.
  • Свойство пользователя. Если вы настроили Firebase Analytics, у вас будет доступ к различной информации о вашей аудитории через свойства пользователя. Вы можете использовать эти свойства в сочетании с FCM, чтобы отправлять целевые уведомления очень определенным группам вашей пользовательской базы, например людям в возрасте от 25 до 34 лет, которые интересуются спортом.
  • Prediction. Если вы настроили Firebase Predictions, вы можете настроить таргетинг на пользователей в зависимости от того, насколько вероятно, что они будут вести себя определенным образом в течение следующих 7 дней. Например, если Predictions предупреждает, что кто-то, вероятно, выйдет из вашей мобильной игры, вы можете использовать FCM, чтобы пригласить его принять участие в новом квесте или отправить ему некоторую внутриигровую валюту..
  • Последнее взаимодействие с приложением. Если пользователь не запускал ваше приложение какое-то время, вы можете использовать этот параметр, чтобы отправить ему несколько уведомлений, просто чтобы напомните им обо всем великолепном контенте, который может предложить ваше приложение.
  • Первое открытие. Это позволяет отправлять уведомления в зависимости от того, когда пользователь впервые открыл ваше приложение. , например, вы можете помочь новым пользователям быстро освоиться, отправив им уведомления с полезными советами и советами.

Таргетинг на одно устройство с помощью регистрационных токенов

Мы уже видели, как отправлять целевые уведомления на основе таких факторов, как возраст пользователя, интересы и время последнего взаимодействия с вашим приложением, но вы можете получить даже более конкретную информацию. В этом последнем разделе я покажу вам, как отправить уведомление FCM на одно устройство.

Когда пользователь запускает ваше приложение в первый раз, FCM SDK создает регистрационный токен для этого экземпляра клиентского приложения. Вы можете использовать FirebaseInstanceId.getInstance (). GetInstanceId () для захвата этого регистрационного токена, а затем отправить уведомление на этот конкретный токен.

Обратите внимание, что в реальном проекте вы обычно захватить токен, отправив его на сервер приложений и сохранив его с помощью предпочитаемого вами метода, но, чтобы упростить задачу, я просто напечатаю этот токен в Logcat Android Studio.

Вот моя завершенная MainActivity :

 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.annotation.NonNull; import android.util.Log; import com.google.android  .gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.InstanceIdResult; открытый класс MainActivity расширяет AppCompatActivity {private static  последняя строка TAG = "MainActivity";  @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState);  setContentView (R.layout.activity_main);  FirebaseInstanceId.getInstance (). GetInstanceId () .addOnCompleteListener (new OnCompleteListener  () {@Override public void onComplete (@NonNull Task  task) {if (To task. /return;}//Получить токен идентификатора экземпляра//String token = task.getResult (). getToken (); String msg = getString (R.string.fcm_token, token); Log.d (TAG, msg);}  });  }} 

Откройте файл strings.xml и создайте строковый ресурс «fcm_token», на который мы ссылаемся в нашей MainActivity:

  Токен FCM:% s  

Теперь вы можете получить уникальный токен вашего устройства:

  • Установите свой проект на подключенное устройство Android или AVD.
  • Откройте Logcat в Android Studio, выбрав вкладку «Logcat» (на которой находится курсор на следующем снимке экрана).

  • Маркер вашего устройства будет напечатан в разделе «Отладка» Logcat, поэтому откройте раскрывающийся список. и выберите «Отладка».

В зависимости от количества информации в вашем Logcat может быть сложно определить строку, которую вы ищете. Если у вас возникли проблемы, выполните поиск по слову «токен» или попробуйте закрыть, а затем перезапустить приложение.

Получив токен, вы можете использовать его для отправки push-уведомление на это конкретное устройство:

  • Перейдите в консоль Firebase и выберите свой проект из раскрывающегося меню, если вы еще этого не сделали.
  • Выберите «Cloud Messaging» в меню слева.
  • Нажмите кнопку «Новое уведомление».
  • Введите заголовок и текст сообщения, как обычно, но затем нажмите «Проверить на устройстве».

  • Скопируйте/вставьте свой токен в поле «Добавить экземпляр…», а затем щелкните появившийся маленький синий значок «+».
  • Установите соответствующий флажок для токена.

  • Нажмите « Тест ».

Теперь это уведомление будет отображаться только на целевом клиентском устройстве.

Заключение

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

Собираетесь ли вы использовать FCM в своих собственных проектах Android? Дайте нам знать в комментариях ниже!

Оцените статью
binarate.ru
Добавить комментарий