|

Push-уведомления в мобильном приложении на платформе программы 1С:Предприятие 8


Содержание:

1. Кратко о push-уведомлениях в учетной системе 1С

2. Пример работы с push-уведомлениями в системе автоматизации 1С

Кратко о push-уведомлениях в учетной системе 1С

Решая задачи по доработке мобильного приложения, может возникнуть потребность отправить пользователю важное сообщение. Нужно, чтобы пользователь мог увидеть сообщение даже когда не работает в самом мобильном приложении, то есть оно закрыто. Такие задачи могут решать push-уведомления. Из основного приложения можно отправить пользователю интересное рекламное уведомление, поздравление и другое.

Чтобы реализовать отправление push-уведомления пользователю потребуется:

  • Сборщик мобильных приложений
  • Сервис отправки push-уведомления

Как собирать мобильное приложение и настраивать сервис отправки push-уведомления в статье рассматриваться не будет.

Чтобы было более понятно, как отправляются push-уведомления с основного приложения платформы 1С:Предприятия 8.3 на мобильное приложение с операционной системой Android можно выполнить некоторые настройки конфигурации, создать интерфейс, написать код в модуль конфигурации основного и мобильного приложения.

Пример работы с push-уведомлениями в системе автоматизации 1С

Мобильное приложение

Переходим к разработке мобильного приложения. Создаем новую конфигурацию. В свойствах конфигурации находим свойства:

  • «Назначение использования» – устанавливаем флаг «Приложение для мобильной платформы»
  •  «Используемая функциональность мобильного приложения» – устанавливаем флаг «Push-уведомления»

Создаем общую форму «ДемоУведомления» и форму обработки «ДемонстрацияPushУведомленияМобильноеПриложение».

Форма уведомления

Общая форма «ДемоУведомления» будет предназначена для отображения полученного push-уведомления, когда мобильное приложение открыто.

Форма для получения идентификатора подписчика (получателя)

В форме обработки «ДемонстрацияPushУведомленияМобильноеПриложение» пользователь мобильного приложения будет получать идентификатор подписчика уведомлений. Он нужен будет для основного приложения, чтобы указать его в получателе push-уведомления.

Получение идентификатора подписчика уведомлений (получателя push-уведомления):

&НаКлиенте

Процедура ПолучитьКлючПолучателяPushУведомления(Команда)

ИдентификаторПодписчикаУведомлений = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений();

ЗаписатьИдентификаторПодписчикаУведомлений(ИдентификаторПодписчикаУведомлений);

КонецПроцедуры // ПолучитьКлючПолучателяPushУведомления()

&НаСервере

Процедура ЗаписатьИдентификаторПодписчикаУведомлений(ИдентификаторПодписчикаУведомлений)

       ЗаписьТекстаXML = Новый ЗаписьXML;

       ЗаписьТекстаXML.УстановитьСтроку();

       СериализаторXDTO.ЗаписатьXML(ЗаписьТекстаXML, ИдентификаторПодписчикаУведомлений);

       ТекстXML = ЗаписьТекстаXML.Закрыть();

       Константы.КлючПолучателяPushУведомления.Установить(ТекстXML);

       // Экспортная процедура используется, для отправки

       // идентификатора подписчика уведомлений через web-сервис.

       // Её создавать необязательно, можно скопировать

       // идентификатор подписчика уведомлений в основное приложение.

       // В статье не будет рассмотрено, как передать

       // идентификатор подписчика уведомлений через web-сервис.

       DemoСинхронизация.ВыполнитьСоединениеСВебСервисом(); // как вариант

       Сообщить(НСтр(“ru=’Ключ получателя записан и отправлен в основное приложение'”));

КонецПроцедуры // ЗаписатьИдентификаторПодписчикаУведомлений()

Пользователь запускает мобильное приложение. Нажимает команду Получить ключ получателя push-уведомления. Система вызывает процедуру ПолучитьКлючПолучателяPushУведомления. С помощью метода ПолучитьИдентификаторПодписчикаУведомлений менеджера МенеджерДоставляемыхУведомлений система получает идентификатор подписчика уведомлений и записывает его в константу в формате XML. Дальше можно этот текст XML передать на основное приложение. Это можно сделать копированием или другими способами. Например, можно передать через web-сервис.

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

Подключение обработчика уведомлений:

Процедура ПриНачалеРаботыСистемы()

ДоставляемыеУведомления.ПодключитьОбработчикУведомлений(“ДемоОбработчикУведомлений”);

КонецПроцедуры

Процедура ДемоОбработчикУведомлений(ДемоУведомление, ДемоЛокальное, ДемоПоказано,                                              ДемоДополнительныеПараметры) Экспорт

       ДополнительныеПараметры = Новый Структура;

       ДополнительныеПараметры.Вставить(“ДемоЗаголовок”,                                                                           ДемоУведомление.Заголовок);

       ДополнительныеПараметры.Вставить(“ДемоТекст”, ДемоУведомление.Текст);

       ДополнительныеПараметры.Вставить(“ДемоИзображение”,        ДемоУведомление.Данные);

       ОткрытьФорму(“ОбщаяФорма.ДемоУведомления”, ДополнительныеПараметры);

КонецПроцедуры

При открытии мобильного приложения система вызовет процедуру мобильного приложения

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

При получении push-уведомления система вызовет экспортную процедуру ДемоОбработчикУведомлений.

Заполнение общей формы уведомления:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

       ЭтотОбъект.ЗаголовокУведомления = Параметры.ДемоЗаголовок;

       ЭтотОбъект.ТекстСообщения        = Параметры.ДемоТекст;

       ЭтотОбъект.Изображение           = ПоместитьВоВременноеХранилище

                                           (Base64Значение(Параметры.ДемоИзображение));

КонецПроцедуры

Которая откроет общую форму уведомления и передаст в неё заголовок, текст уведомления и изображение из push-уведомления (листинг 3).

Сборщик приложений для мобильного устройства. Использовать сервисы RuStore

В сборщике приложения для мобильных устройств для того, чтобы можно было использовать функциональность push-уведомления, в данном случае потребуется установить флаг «Использовать сервисы RuStore» (версия сборщика приложения для мобильных устройств 8.3.26.26) и заполнить поле «Идентификатор проекта для PUSH-уведомлений» (рис. 3).

Основное приложение:

Переходим к основному приложению.

Форма обработки, для отправки push-уведомления на мобильное устройство

В основном приложении добавить форму обработки для отправки push-уведомления на мобильное устройство. На форме обработки добавить несколько реквизитов и командную кнопку.

Пользователь заполняет заголовок уведомления, текст уведомления и изображение (рис. 5).

Заполнения формы, для отправки push-уведомления на мобильное устройство

И нажимает кнопку «Отправить push-уведомление на мобильное устройство».  В модуле формы будет вызвана процедура ОтправитьПушУведомлениеНаМобильноеУстройство.

Процедура вызывает окно ввода даты и времени получения push-уведомления на мобильное устройство.

&НаКлиенте

Процедура ОтправитьПушУведомлениеНаМобильноеУстройство(Команда)

ДополнительныеПараметры = Новый Структура;

ДатаУведомления = ТекущаяДата();

Подсказка = “Введите дату и время”;

ЧастьДаты = ЧастиДаты.ДатаВремя;

Оповещение = Новый ОписаниеОповещения(“ПослеВводаДаты”, ЭтотОбъект, ДополнительныеПараметры);

ПоказатьВводДаты(Оповещение, ДатаУведомления, Подсказка, ЧастьДаты);

КонецПроцедуры // ОтправитьПушУведомлениеНаМобильноеУстройство()

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

Ввод даты и времени получения push-уведомления на мобильное устройство

Пользователь вводит дату и время появления push-уведомления и нажимает кнопку Ок. Система вызывает процедуру ПослеВводаДаты.

Пример отправки push-уведомления на мобильное устройство.

&НаКлиенте

Процедура ПослеВводаДаты(ЗаданнаяДата, ДополнительныеПараметры) Экспорт

Если НЕ ЗаданнаяДата = Неопределено Тогда

ПушУведомление = Новый ДоставляемоеУведомление;

ПушУведомление.Заголовок  = Объект.ЗаголовокУведомления;

ПушУведомление.Текст             = Объект.ТекстУведомления;

ПушУведомление.Данные     = Base64Строка(ПолучитьИзВременногоХранилища(Данные));

ПушУведомление.ДатаПоявленияУниверсальноеВремя = ПолучитьЗаданнуюДатуВремяПоявленияУниверсальногоВремени(ЗаданнаяДата);

ПушУведомление.Получатели.Добавить(ПолучитьКлючПолучателяPushУведомления());

CекретныйКлючКлиента = ОтправкаДоставляемыхУведомлений.

ПолучитьМаркерДоступа(ТипПодписчикаДоставляемыхУведомлений.RMS,

“********************************”,           “*****************************************************************”);

ОтправкаДоставляемыхУведомлений.Отправить(ПушУведомление, CекретныйКлючКлиента);

КонецЕсли;

КонецПроцедуры //ПослеВводаДаты()

В процессе описано создание и отправка доставляемого push-уведомления. Кроме заголовка, текста и вложенного изображения заполняется и другая информация. Изображение, которое будет отправлено в push-уведомлении, имеет расширение «.png». Дата появления универсального уведомления должна быть в формате универсального времени. В процедуре описано преобразование введенных пользователем даты и времени в универсальное время.

&НаСервере

Функция ПолучитьЗаданнуюДатуВремяПоявленияУниверсальногоВремени(ЗаданнаяДата)

       Возврат ТекущаяУниверсальнаяДата() + (ЗаданнаяДата – ТекущаяДата());      

КонецФункции //ПолучитьЗаданнуюДатуВремяПоявленияУниверсальногоВремени()

В доставляемое уведомление нужно уточнить список или одного получателя.

В процедуре описано извлечение сведений о получателе, хранимое в константе.

&НаСервере

Функция ПолучитьКлючПолучателяPushУведомления()

ЧтениеТекстаXML = Новый ЧтениеXML;

ЧтениеТекстаXML.УстановитьСтроку(Константы.КлючПолучателяPushУведомленияНаМобильномУстройстве.Получить());

КлючПолучателяPushУведомления = СериализаторXDTO.ПрочитатьXML(ЧтениеТекстаXML, Тип(“ИдентификаторПодписчикаДоставляемыхУведомлений”));

ЧтениеТекстаXML.Закрыть();

Возврат КлючПолучателяPushУведомления;

КонецФункции //КлючПолучателяPushУведомления()

Сведение о получателе нужно будет получить на стороне мобильного устройства и передать в основное приложение. Как получить сведения о получателе было описано ранее. Сведения о получателе в рамках данной статьи будет храниться в константе основного приложения. Константа с типом Строка, в формате XML.

При отправке push-уведомления могут использоваться разные типы подписчиков доставляемых уведомлений. В данной статье будет использоваться тип RMS. Для типа RMS потребуется получить маркер доступа. Чтобы получить маркер доступа нужен идентификатор приложения и ключ приложения. Их нужно переписать с сервиса отправки push-уведомлений. В данной статье не будет разбираться работа с сервисом отправки push-уведомлений. Их несколько, и от выбора сервиса зависит написание кода в модуле формы.

Push-уведомление

После выполнения метода Отправить менеджера МенеджерОтправкиДоставляемыхУведомлений через установленное время push-уведомление будет доставлено на мобильное устройство.

Push-уведомление в форме мобильного приложения

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

Специалист компании ООО “Кодерлайн”,

Быков Владимир


Помогла ли вам статья? Оставьте свой комментарий:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

Мы занимаемся внедрением и обслуживанием программных продуктов 1С.