firebase-cloud-messagingНачало работы с firebase-cloud-messaging


замечания

Печально известный общий вопрос: «Как отправлять уведомления с устройства на устройство», к сожалению ответ: вы не можете. Для отправки push-уведомлений необходимо запустить FCM. Это можно сделать тремя способами:

  1. Непосредственно в веб-консоли Firebase
  2. Настройка прослушивателя функций Firebase, а затем запуск FCM
  3. Сервер запрашивает FCM для отправки push-уведомления

Push-оповещение - информационная полезная нагрузка, отправляемая из FCM. Существует 3 типа push-уведомлений: notification , data , notification and data . Эта информация может быть представлена ​​как JSON:

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

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

  1. Консоль может отправлять notification и notification с data но не только data
  2. Функции и любой сервер могут отправлять 3 типа

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

Не путайте push-уведомление, тип notification и визуальное уведомление, это последний соответствует классу Android (обычно NotificationCompat).

Поведение нажатия различается в зависимости от типа и если приложение находится на переднем плане или в фоновом режиме. Не на переднем плане означает, сведено к минимуму или закрыто.

  1. notification инициирует визуальное уведомление по умолчанию, если приложение не находится на переднем плане , это уведомление может быть изменено в манифесте, см. документацию . Если приложение находится на переднем плане, мы должны настроить поведение внутри метода onMessageReceived .
  2. поведение типа data всегда должно быть настроено.
  3. Комбинированное notification и data если приложение не находится на переднем плане, будут инициировать визуальное уведомление по умолчанию, а полезная нагрузка data будет доступна при нажатии пользователем. Поскольку действие запуска запускается при нажатии на визуальное уведомление, вы должны буквально getIntent().getStringExtra("yourKey"); в этой Деятельности для получения данных. Если приложение активно (на переднем плане), вы должны настроить поведение внутри метода onMessageReceived и немедленно получить доступ к полезной нагрузке data .

Чтобы получить информационную полезную нагрузку, вы должны сделать это внутри метода onMessageReceived , единственным доступным аргументом является сообщение:

  1. Чтобы получить notification вы должны remoteMessage.getNotification() после чего вы можете получить тело или название с соответствующими методами
  2. Чтобы получить data вас есть remoteMessage.getData().get("yourKey") .

Является хорошей идеей для добавления каждой не нулевой проверки, будет несколько типов уведомлений, поступающих в расширенные приложения. Хорошей стратегией является проверка того, являются ли каждое, notification и data не нулевыми. Следующей полезной стратегией будет всегда использовать ключ type в уведомлениях data , чтобы сделать некоторый контроль потока.

Чтобы отправить data с веб-консоли Firebase, необходимо открыть дополнительные параметры.

Ключи notification ограничены и указаны в документации. Значения в любом типе могут быть только String .

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

Установка или настройка

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

Для добавления FCM в проект любого типа всегда добавляется библиотека .

Учитывая особую поддержку Android, стоит занять несколько строк. Создайте новый проект с помощью Android Studio, в меню выберите Tools / Firebase, он запустит помощника Firebase. Выберите «Cloud Messaging» и выполните шаги 1 и 2.

  1. Если ваш проект ранее добавляет еще одну службу Firebase, то первый шаг будет отмечен как завершенный, в противном случае вы должны это сделать. На первом этапе вы можете создать проект в Firebase или создать новый. На этом этапе будет загружен файл google-service.json, который имеет конфигурацию для подключения к проекту Firebase. Этот файл находится в папке «приложение».
  2. Этот шаг добавляет библиотеку Google Services и библиотеку Firebase к градиенту, а также добавит дополнительную конфигурацию в эти файлы.

Это является основой для добавления FCM в проект. С этого момента клиент уже может получать уведомления о загрузке FCM, содержащие полезную нагрузку «уведомление», если приложение не находится на переднем плане (подробнее в примечаниях).

Чтобы дополнительно настроить поведение FCM в клиенте, нам нужно добавить 2 службы, это хорошо описано на официальном сайте. Снова мы рассмотрим Android:

  1. Создайте класс, который расширяет FirebaseMessagingService и переопределяет метод onMessageReceived
  2. Создайте класс, который расширяет FirebaseInstanceIdService и переопределяет метод onTokenRefresh
  3. Зарегистрируйте оба класса в манифесте, пожалуйста, сделайте это внутри тега application </ intent-filter> </ intent-filter>

Вы можете получить полезную нагрузку notification полезную нагрузку data внутри метода onMessageReceived используя единственный аргумент. Метод onTokenRefresh вызывается, когда FCM-токен назначается FCM. Маркер FCM является уникальным идентификатором для установки приложения и устройства и может использоваться как адрес устройства для прямой отправки push-уведомлений.

Прочтите замечания для получения дополнительной информации о типах уведомлений и связанных с ними поведении.