Содержание:
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-уведомление в форме мобильного приложения
При открытии мобильного приложения сработает ранее подключенный обработчик уведомлений.
Специалист компании ООО “Кодерлайн”,
Быков Владимир
Добавить комментарий