Notification

Материал из wiki.appsalutecreator.com
Версия от 15:52, 12 ноября 2018; Bmor (обсуждение | вклад) (Firebase Cloud Messaging)
Перейти к: навигация, поиск

Объект Notification предназначен для показа push уведомлений на IOS устройствах.

Параметры объекта

Основные параметры

  • имя события (name) - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.
  • сообщение (message) - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.
  • большая картинка (big_picture) - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления
  • год (year) - Год, когда сработает оповещение. Минимальное значение - 1971 .
  • месяц (month) - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .
  • день (day) - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .
  • час (hour) - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .
  • минута (min) - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .
  • секунда (sec) - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .
  • задержка (delay) - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.
  • перед первым init экстеншена (delayInit) - Задержка в секундах до первой инициализации расширения
  • цвет заголовка (colorTitle) - Цвет заголовка - только для кастомных нотификейшенов
  • цвет текста (colorText) - Цвет текста - только для кастомных нотификейшенов

Firebase Cloud Messaging

  • Обработчик бандлов (fcmBundleHandler) - Объект, в который будут записаны параметры бандла и который будет переведен в состояние eventID бандла при fcm_check_bundle (см. дальше)

Состояния объекта

  • set - устанавливает нотификацию в очередь
  • clear - очищает очередь нотификации
  • erase - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения
  • fcm_subscribe_topic - Firebase only! Подписаться на топик из поля topic
  • fcm_unsubscribe_topic - Firebase only! Отписаться от топика из поля topic
  • fcm_check_bundle - Firebase only! Проверить наличие fcm бандлов

Установка уведомлений (объект notification):

Состояние
"set", - оба способа
"set_native", - устройство
"set_parse", - парс
или через параметр
<property name="отсылать в" type="enum" value="0" id="send" hint="отсылать в" regexp="обе службы=0,только локальный пуш=1,только парс=2" /> (тогда состояние set)

Пример применения

Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом "message of notification".

Для этого разместим на сцене объект notification и установим ему следующие параметры:

  • задержка - 300

Notification 01.jpg


В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.

Далее добавим на сцену кнопку, которая будет передавать параметры объекту "notification" и переводить объект "notification" в состояние "set".

Notification 02.jpg

Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут. На устройстве это выглядит так:

IMG 0043.PNG
IMG 0046.PNG


Информация в логах

I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась
вся очередь уведомлений
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление
удалено из очереди

Примечания

В обычном случае по нажатию на сообщение открывается приложение на экране котором были, или на изначальном экране в зависимости от настроек. У объекта options можно задать параметр notifScrID (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.

Firebase Cloud Messaging

Firebase Cloud Messaging позволяет рассылать кастомные уведомления с определенным набором доп. параметров, которые в последствии будут переданы во вьювер и сохранены в опциях (fcm бандлы).

Подготовка проекта

  1. Создайте и настройте проект в Firebase консоли (Link)
  2. Скачайте из консоли файл конфигураций проекта google-services.json
  3. Перенесите параметры из google-services.json в project\conf\pom\sdl\google_params.json в поле extra_strings
   google_app_id                       >>          {YOUR_CLIENT}/client_info/mobilesdk_app_id
   gcm_defaultSenderId                 >>          project_info/project_number
   default_web_client_id               >>          {YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
   ga_trackingId                       >>          {YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
   firebase_database_url               >>          project_info/firebase_url
   google_api_key                      >>          {YOUR_CLIENT}/api_key/current_key
   google_crash_reporting_api_key      >>          {YOUR_CLIENT}/api_key/current_key
   project_id                          >>          project_info/project_id
   google_storage_bucket               >>          project_info/storage_bucket

Обработка в редактора

todo

Отправка сообщений

todo

Особенности использования

Сообщения firebase имеют два основных блока:

  • notification - стандартный пуш, содержит заголовок и текст сообщения;
  • data payload - содержит произвольный набор параметров ключ-зачение (с ограничением 4Кб в firebase и 50 штук в наших реалиях)

Сообщение может содержать либо один из этих блоков, либо оба сразу.

При наличии в сообщении блока notification оно автоматически трактуется системой как пуш и при получении такого на устройстве - сразу закидывает его в системный трей (т.е. без нашей обработки). Мы никак не властны над подобными сообщениями и их параметрами (с параметрами то отдельная тема), а значит никаких кастомизаций в виде цветного шрифта и/или картинки не будет.

Если сообщение имеет только data payload - оно всецело обрабатывается нашим движком, а значит мы имеем полный контроль над его отображением и всеми его параметрами. Но такие сообщения невозможно отправить из firebase консоли, только скриптом (либо из нашей одминки).

Для корректной работы, пожалуйста, используйте только data payload!

Пример

Download