Заметки из Зазеркалья
Реализовано в версии 8.3.6.182 мобильной платформы.
В платформе 1С:Предприятие и в мобильной платформе мы реализовали механизм push-уведомлений и локальных уведомлений.
Push и локальные уведомления это прежде всего способ проинформировать пользователя о событии. Причём событие это может произойти даже в тот момент, когда мобильное приложение находится в фоновом режиме (запущено, но неактивно), либо когда оно просто выгружено из памяти и не исполняется.
Локальные уведомления
Локальные уведомления это удобный инструмент для реализации разнообразных напоминаний, которые мобильное приложение устанавливает само для себя. Напоминаний, которые могут сработать уже в тот момент, когда приложение не активно.
Создание локального уведомления в мобильном приложении может выглядеть, например, следующим образом:
А обработка локального уведомления в мобильном приложении может выглядеть так:
Локальные уведомления могут быть моментальными (отображается сразу), запланированными (отображается в указанное время) или периодическими (отображается снова по истечении указанного периода).
Push-уведомления
Дальше возможны два сценария взаимодействия. Во-первых, информацию, связанную с событием, можно передать в самом push-уведомлении, но надо помнить, что его размер ограничен.
Поэтому если нужно передать значительный объем данных, можно использовать другой сценарий взаимодействия. В нём push-уведомление используется только как сигнал мобильному приложению о том, что ему необходимо связаться с основным приложением. Мобильное приложение, получив push-уведомление, самостоятельно связывается с основным приложением тем способом, которым оно обычно это делает. Например, через веб- или http-сервис. И получает те данные, которые основное приложение подготовило для него.
В результате общая схема взаимодействия выглядит следующим образом:
Например, отправка push-уведомления в основном приложении может выглядеть следующим образом:
А получение push-уведомления в мобильном приложении на Android может выглядеть так:
Получение и обработка уведомлений
Если мобильное приложение активно, то уведомление сразу доставляется в приложение. Если в приложении подключен обработчик уведомлений, то он исполняется. В этом обработчике можно запросить у основного приложения большой пакет данных, если в этом есть необходимость. Потому что размер push-уведомления ограничен, и передавать значительные объёмы данных в нём самом невозможно.
Если мобильное приложение работает в фоновом режиме (неактивно) или вообще не исполняется (выгружено из памяти), то уведомление отображается операционной системой. При этом используется звуковое оповещение и наклейка. В iOS наклейка будет установлена у иконки мобильного приложения на домашнем экране, а в Android она задаёт число, которое будет отображено в сообщении на панели уведомлений. После того, как пользователь нажмёт на уведомление, будет активизировано (или запущено) мобильное приложение, и будет выполнен (если он подключён) обработчик уведомлений.
Расширение «PUSH уведомления для мобильного клиента».
У расширения должен быть отключен безопасный режим. Расширение отправляет PUSH-уведомление, когда пользователю приходит или перенаправляется задача исполнителя. Подобным методом можно отправлять уведомления и о других событиях.
В расширении добавлено 3 роли.
Роль на отправку уведомлений рекомендуется установить для всех пользователей.
В справочнике НастройкиPUSHУведомлений нужно прописать свой ИД проекта и КлючСервера FCM
Скачать файлы
Специальные предложения
Обновление 04.08.20 08:26
См. также
Дневник времени. Простое мобильное приложение 1С для телефона на Андроид Промо
Дневник времени. Для адептов тайм-менеджмента и всех тех, кто ценит свое время. Предназначен для ежедневных записей в телефоне расхода времени на различные задачи. Отчет по записям программы позволяет увидеть, сколько времени, на какие задачи расходовалось и проанализировать траты времени за месяц. Можно выгрузить записи в csv файл и анализировать на дескопном компьютере, например в Экселе. Можно составлять планы на день и отмечать, что удалось сделать, а что нет.
12.03.2021 2492 4 pricec 1
Внешняя компонента для мобильного приложения
Внешняя компонента для дополнения мобильной платформы некоторыми функциями.
02.11.2021 452 0 Prometeus2011 0
Пример формы авторизации на Javascript для мобильного приложения
Пример формы авторизации на Javascript для мобильного приложения
25.10.2021 564 1 rail21 0
1С Push-уведомления с помощью Firebase Cloud Messaging
Отправка Push-уведомлений из 1С в мобильное приложение за 6 шагов.
17.09.2021 1123 0 zykov_vitaliy 9
Внешняя компонента: Android tools Промо
12.01.2021 5615 15 KAV2 10
Расширение для работы с мобильным приложением + мобильное приложение.
19.08.2021 1097 3 33lab 0
Определение геокоординат в мобильной платформе с помощью внешней компоненты
Асинхронно, без использования сервисов Google.
13.08.2021 1918 1 sivin-alexey 5
Распознавание речи в мобильном приложении 1С на Android
Внешняя компонента для мобильной платформы 1С, работающая в связке с отдельной службой и позволяющая реализовать распознавание речи в мобильном приложении на Android.
15.07.2021 3774 4 salexdv 6
Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.
09.01.2019 62164 269 informa1555 236
Ошибка отправки push-уведомления из 1С на мобильное приложение 1С Android
Коллеги, прошу помощи.
С августа 2019 года перестали отправляться push-уведомления из 1С в мобильное приложение 1С (мобильная платформа 1С) на Andoid.
До этого момента всё отлично отправлялось.
Ошибка следующая :
» Ошибка при вызове метода контекста (Отправить): Отправка сообщения 1 через GCM завершилась ошибкой: Error=DeprecatedEndpoint «
Платформа 1С: 8.3.9.2170, 8.3.12.1567, 8.3.15.1534 (самая актуальная из 8.3);
Мобильная платформа 1С: 8.3.13.45, 8.3.15.59 (самая актуальная из мобильных).
Описание механизма (который работал больше года) :
1. Сторонние сервисы не используются.
2. Создан проект в firebase.google.com;
2.1 Получен номер проекта (как номер отправителя);
2.2 Получен ключ сервера (для отправки push-уведомлений);
3. В мобильном приложении 1С при каждом входе обновляется IDПодписчика.
Код отправки push-уведомления из основной базы :
Код получения IDПодписчика в мобильном приложении 1С :
В интернете обсуждений такой проблемы, связанной с 1С нет. Никто push-уведомления не использует что ли?
Есть что-то похожее на английских сайтах посвящённое разработке мобильных приложений на Андроид. Но там решения основанные на правках в самом коде приложений.
Я так понял это проблема/задача 1С? Т.е. в самой платформе нужно что-то изменить?
Просто странно, что даже на последних версиях платформы не решена проблема. И почему-то нет похожих вопросов в рунете по 1С.
PUSH уведомления. Регистрация и управление из типовых конфигураций 1С
Введение
Представленное решение представляет законченную подсистему для отправки Пушей. Основывается на системе сообщений Firebase Clouding Messaging от Google. Может отправлять на сообщения на устройства Android, Windows.
Основной функционал и состав
Решение состоит из расширения конфигурации и архива файлов для разворачивания на хостинге.
1. Регистрация получателей уведомлений на сайте
3. Получение списка подписчиков со всеми сопутствующими параметрами(имя пользователя, ид в базе, Операционная система, Браузер, ТипУстройства(WiFi, Mobile)).
4. Возможность фильтрации отправок Пушей по различным параметрам.
5. Отправка Пушей, как индиидуальная, так и массовая.
Т.к. решение поставляется в виде Расширения с открытым кодом, есть возможность кастомизации под конкретные задачи бизнеса.
Необходимые требования
Для полноценной работы необходима платформа 8.3.12 не ниже. Если нужны будут регламентные задания, то желательно клиент-серверный вариант.
Для разворачивания сайта на хостинге необходимо:
2. Возможность использования php
3. Использование баз данных mysql
Как это работает.
Весь процесс подписки представлен на картинке
Пользователь перешел по ссылке Потом нажимает «Разрешить» и теперь он есть в Вашей
и ввел свой код, либо код подставился базе
автоматически. Далее «Подписаться»
Теперь зная коды пользователей(Вы же сами их и выдали) можно переходить в 1С.
Если Вам надо отправить Пуш, то вы создаете объявление
Далее на закладке фильтры настраиваете аудиторию
Жмете отправить и все.
Ваш получатель получает
Порядок установки
1. Необходимо зарегистрироваться на Firebase и там зарегистрировать свое приложение. Для этого Вам необходимо зарегистрировать Google аккаунт,
Затем нажимаете на добавить проект, вводите имя проекта на английском языке.
Убираете использование гугл аналитики(потом всегда сможете включить). Нажимаете «далее» и «Создать проект»
пишите имя своего приложения(любое)
Регистрируете свое приложение. И сохраняете в блокнот
то что в красной рамке.
Затем переходите в консоль по кнопке
Это секретный ключ, он понадобиться в настройке в 1С.
Здесь мы собственно закончили.
2. Переходим на хостинг и через фтп загружаем файлы api из архива для сайта
2.2 теперь открываем файл firebase-messaging-sw.js и там меняем конфигурацию приложения из ранее сохраненного в блокноте. (См. п.1 )
Сохраняем и закрываем
2.3. Далее открываем файл firebase_subscribe.js
И меняем там конфигурацию аналогично как в п.2.2
Сохраняем и закрываем.
2.5. Необходимо настроить подключение к базе данных где будут храниться подписки
Базу данных зарегистрировать необходимо на хостинге. Открываем файл db.php
На этом настройка сайта закончена.
Сайт готов для работы.
3.1. Пользователю необходимо установить роль «Push использование подписок»
3.2. Переходим в подсистему «Push отправка сообщений»
Далее создаем новый элемент справочника «Отправители пуш»
Поз 1. Указываем УРЛ, где находится наш сайт. Последний слэш обязателен.
Поз 2. Вводим пароль из п.2.1.
На этом настройка закончена.
Другие возможности в расширении
1. Справочник «Объявления пуш» предназначен для хранения объявлений и отправки.
Здесь в каждом фильтре можно через запятую можно указать ограничения на каждый из параметров.
Браузеры— Название браузера, то же определенный перечень Chrome,OmniWeb,Opera,Firefox,Internet Explorer
2. Обработка «Отправка пуш»
Позволяет отправлять разово пуш для выбранных получателей.
Картинка и Иконка указываются в виде УРЛ
P.S. Понадобится помощь в установке или в прикрутке к Вашему сайту, обращайтесь
Причины купить
1. Повышение лояльности клиентов
2. Экономия бюджета на рассылки уведомлений и сообщений.
Достоинства
1. Бесплатная мгновенная рассылка клиентам и сотрудникам.
2. Возможность использовать для типовых конфигураций из расширения
3. Не использует сторонние сервисы-посредники.
Отправка Push-уведомлений через сервис Firebase Cloud Messaging по протоколу FCM HTTP v1 API
Авторизация для выполнения запросов к сервисам Google.
Основным отличием, помимо формата самого отправляемого сообщения, является способ авторизации. В отличии от постоянного ключа (Web API Key, который, нужно заметить, для новых проектов вообще не доступен), который передаётся в заголовке при использовании старого протокола, теперь необходимо отправлять ключ доступа (access token), срок действия которого максимально может составлять один час. По истечению срока действия необходимо получать новый ключ доступа для доступа к сервисам Google. Сделано это для увеличения безопасности. Если такой ключ доступа попадёт в посторонние руки, то максимум через час он уже будет недействителен.
Так же в качестве плюсов нового протокола приводится более эффективная настройка сообщений для разных платформ. Можно указать общие параметры уведомления и настроить дополнительные определения для конкретных платформ (Android, APNS, Web push protocol).
И если отправка самого push-уведомления через сервис FCM не вызывает сложностей (достаточно сформировать JSON объект согласно описанию https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages?hl=ru и отправить его в POST запросе по адресу https://fcm.googleapis.com/v1/projects/<идентификатор-проекта>/messages:send, указав в заголовке ключ доступа, речь о котором идёт выше), то вот как получать этот ключ пришлось разбираться более детально.
Можно, конечно, получать ключ с использованием авторизации пользователя через OAuth2. Это когда открывается форма c веб-страницей, в которой выполняется переход на сайт Google для авторизации, а после входа в свою учётную запись возвращается ключ доступа. Потом периодически по истечению срока действия ключа выполняется HTTP запрос для обновления этого ключа уже без участия пользователя. Такой метод использовался мной для обращения к сервисам Google Карты и Календарь. Но в данной ситуации захотелось выполнять авторизацию (получать ключ доступа) от имени сервисного аккаунта, т. е. вообще без участия пользователя.
Для выполнения такой авторизации используется JSON Web Token, который подписывается приватным ключом и отправляется на сервер авторизации. В ответ приходит ключ доступа. Когда срок действия этого ключа истекает, необходимо повторить процесс авторизация для получения нового ключа.
Далее мы рассмотрим вкратце, как это сделать на 1С и по-русски)).
Получение приватного ключа для выполнения авторизации.
В первую очередь, нам понадобится приватный ключ, который можно скачать в настройках проекта Firebase. Как создавать такой проект мы рассматривать не будем, информации на эту тему достаточно в интернете, в том числе и на этом сайте. А если вы ранее использовали сервисы Firebase (например, для отправки push-уведомлений по устаревшему протоколу), то такой проект у вас уже есть.
Переходим к настройкам своего проекта Firebase на закладку Service Accounts и нажимаем кнопку Generate new private key. Браузером будет скачан JSON файл с данными приватного ключа. Внимание! Храните этот файл в надёжном хранилище и не допускайте его утечки.
Далее необходимо сгенерировать JSON Web Token (JWT) и подписать его приватным ключом для отправки на сервер авторизации.
Чтение приватного ключа в 1С.
Приватный ключ является объектом JSON. Ниже приведён пример содержимого ключа.
Этот ключ понадобится для создания подписанного JWT, поэтому необходимо его прочитать из файла и преобразовать в Структуру.
Создание JWT.
JWT является строкой и состоит из трёх частей, разделённых точкой: заголовок, данные авторизации (тело), цифровая подпись. Каждая часть представляет собой строку Base64.
Для получения подписи необходимо подписать приватным ключом первые две части JWT.
И добавить полученное значение подписи в конец JWT через точку.
Формат заголовка JWT.
Формат заголовка представляет собой JSON объект, содержащий два параметра:
Таким образом заголовок будет всегда одним и тем же:
В 1С можно просто устанавливать эту строку. Для преобразования простой строки в Base64 можно создать соответствующую процедуру.
В результате код получения заголовка JWT будет выглядеть следующим образом.
Формат данных авторизации (тело JWT).
Тело JWT так же является объектов JSON и содержит следующие параметры:
Сформировать тело JWT в 1С можно следующим образом.
Формирование подписи JWT.
После получения строк Base64 заголовка и тела их необходимо соединить через точку и вычислить цифровую подпись полученной строки с использование приватного ключа, содержащемся в скачанном выше файле. К сожалению, встроенные средства криптографии 1С не позволяет это сделать, поэтому для формирования подписи используется внешняя программа OpenSSL.
Для формирования подписи этой программой необходимо выполнить следующую команду системы:
Создадим вспомогательную процедуру для записи строки в файл на диске. Это должны быть текстовые файлы в формате UTF-8.
Далее реализуем алгоритм по формированию подписи с использованием OpenSSL.
Авторизация и получение ключа доступа с использованием сформированного JWT.
Теперь мы можем выполнить авторизацию и получить ключ доступа для обращения к сервисам Google.
Для этого необходимо выполнить HTTP POST запрос по адресу https://oauth2.googleapis.com/token.
В теле запроса необходимо передать объект JSON, содержащий два параметра:
Такой запрос будет выглядеть следующим образом.
В ответе придёт JSON объект, содержащий ключ доступа (access_token) и срок действия (дата, после которой ключ станет недействительным).
Произведём чтение этих данных из ответа.
Теперь, имея действующий ключ доступа мы может выполнять запросы к сервисам Google, в том числе и для отправки push-уведомлений.
Отправка push-уведомлений.
Как было сказано вначале, для отправки push-уведомлений необходимо сформировать JSON-объект, заполненный необходимыми данными и отправить его по адресу https://fcm.googleapis.com/v1/projects/<идентификатор-проекта>/messages:send, указав в заголовке ключ доступа.
Для этой статьи мной был создан проект Firebase с идентификатором «fir-push-for-1c» (Project ID на закладке General настроек проекта). Поэтому адрес, по которому необходимо отправить push-уведомление будет выглядеть следующим образом: https://fcm.googleapis.com/v1/projects/fir-push-for-1c/messages:send.
Объект JSON называется message и содержит следующий поля:
Напишем код, который отправит простое push-уведомление, содержащее заголовок, текст сообщения и данные о вымышленной задаче (тип задачи и её идентификатор). Заголовок и текст сообщения используются для отображения оповещения на экране устройства, а данные (data) используются непосредственно самим приложением, чтобы «знать» что, собственно говоря, пришло.
Таким образом мы выполнили авторизацию, получили ключ доступа и отправили push-уведомление.
Библиотека отправки Push уведомления через Firebase Cloud Messaging.
«Для облегчения жизни» описанный выше код был собран в отдельные процедуры и функции для авторизации и отправки push-уведомлений в отдельную библиотеку, выполненную в виде расширения. Её можно подключить к своей конфигурации как расширение, либо добавить общие модули из этой библиотеки непосредственно в конфигурацию своего прикладного решения. Дополнительно необходимо будет реализовать получение идентификаторов получателей от мобильных устройств и загрузку приватного ключа из файла JSON.
Описание процедур и функций библиотеки.
Выполнение авторизации.
Для выполнения авторизации предназначен общий модуль fcm_АутентификацияGoogleAPIКлиентСервер, который содержит одну экспортную функцию ПолучитьКлючДоступаGoogleAPI.
Синтаксис:
Параметры:
Возвращаемое значение:
Описание:
Выполняет авторизация на сервере Google и возвращает ключ доступа. В случае возникновения ошибки при авторизации будет вызвано Исключение.
Отправка push-уведомлений.
Для отправки push-уведомлений предназначен общий модуль fcm_УведомленияКлиентСервер. Данный модуль содержит функцию ОтправитьУведомление для отправки уведомлений и ряд служебный функций для формирования объектов уведомления.
ОтправитьУведомление
Синтаксис:
Возвращаемое значение:
Описание:
Выполняет отправку push-уведомления через Firebase Cloud Messaging. В случае возникновения ошибки при отправке уведомления будет вызвано Исключение.
Вспомогательные функции для создания структуры, описывающей push-уведомление.
Ниже приведён пример отправки такого же push-уведомления, которое было приведено выше с использованием библиотеки.
Так же в состав библиотеки входит обработка, демонстрирующая отправку push-уведомлений.
Условия использования библиотеки отправки Push уведомления через Firebase Cloud Messaging.
Исходный код библиотеки отправки Push уведомления через Firebase Cloud Messaging распространяется под лицензий Apache 2.0. Вы можете свободно использовать, изменять и распространять его, в том числе и в коммерческих целях с обязательным указанием авторства. Подробнее см. текст лицензии http://www.apache.org/licenses/LICENSE-2.0
Работа была протестирована на версии 1С:Предприятия 8.3.18.1363.