А какой сервис у самой 1С? На сколько мне известно, то такого нет. Обращение идет к серверам гугла, эпла и т.д. Наоборот есть возможность это миновать, в менеджере отправки в методе Отправить есть возможность указать, что используется промежуточный сервис, но как это работает - не разбирался.
Еще можно напрямую через http-запрос отправить через любой сторонний сервис, но опять же не сервера 1С. Или быть может речь про локальные уведомления самой мобильной платформы?
(2) Я говорю про этот сервис - https://pushnotifications.1c.com Да, это промежуточный сервис, который обращается к нативным сервисам платформ.
Просто его настройка и использование намного проще, чем рассказано у вас в статье. Вот и интересуюсь, стоит ли оно того?
(3) не знал про такой сервис от 1С, будет нужно - разберусь как им пользоваться. А так, мне думается, что все будет тоже самое, кроме получения ключа сервера и номера проекта. Если так, то в чем сложность моего способа?
6.
user665172_ya.kefimov
06.04.17 19:06 Сейчас в теме
Вопрос, тестировали как ведет себя обработка пуш уведомления если мобильное приложение выгружено из памяти? Всмысле показывается ли пуш средствами ОС или будет показан только когда запустится мобильное приложение или вообще не будет показан?
Еще вопрос, пробовал ли оправлять пуш из консоли firebase?
И еще вопрос, пуш успешно получен когда мобильное приложение собрано сборщиком и установлен на девайс или установленным мибильным приложением в "режиме разработки"?
(6) Если приложение выгружено из памяти, то ничего не происходит, к сожалению. Когда запускаешь 1С все сообщения приходят сразу. Хотя я где-то читал, что должны пуши приходить и когда выгружено приложение из памяти.
В консоли firebase не разбирался, пока не было времени и необходимости.
Пуш будет получен и если приложение собрано в apk и если опубликовано на вэб-сервере, т.е. в "режиме разработки" (в статье именно 2 вариант)
8.
user665172_ya.kefimov
06.04.17 19:56 Сейчас в теме
(7) Спасибо за ответы, пару недель тоже экспериментировал с пушами, делал все как в статье за исключением того, что пробные пуши отправлял прямо из консоли firebase. При этом консоль показывала что пуш отправлен, но мобильное приложение ни в какую не хотело его принимать. У меня все-таки подозрение, что в статье описана работа с GСM, а не FCM. Вроде разница между ними небольшая и пока в FCM сохраняется обратная совместимость с GCM, но все-такие какая-то разница есть. Например в проектах react-native требуются определенные телодвижения для перехода с GCM на FCM (правка файла манифеста приложения)
Если будет время прошу попробовать все-таки отправить пуш из firebase консоли (firebase консоль - Notifications - Новое сообщение) и посмотреть пример ли его мобильная платформа. Тогда поймем действительно ли мобильная платформа принимает именно FCM пуши.
9.
user665172_ya.kefimov
07.04.17 22:13 Сейчас в теме
Так, подтвердились нехорошие опасения. Мобильная платформа не видит FCM пушей, только GSM. У firebase на днях появилась замечательная фишка cloud functions. Их например можно использовать для отправки пушей мобильной платформе, триггером события при этом является изменение данных в узле firebase database. Так вот внутри этих cloud functions используются именно FCM, а не GCM. Я тестировал так: задеплоил простую функцию, собрал простое приложение на react-native. Так вот, это нативное приложение пуши из cloud function отправленные при помощи FCM принимает замечательно, а мобильное приложение нет =(
И я так понимаю в кишки мобильного приложения залезть не получится и поправить это, только ждать пока 1с это сами реализуют.
Ошибка при вызове метода контекста (Отправить)
ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, "PUSH_SRV_API_KEY_12345");
по причине:
Несоответствие типов (параметр номер '1')
(14) Спасибо большое за наводку - и действительно ведь - написано в мануале.
Теперь уже лучше - ошибка выглядит иначе
"Отправка сообщения 1 через GCM завершилась ошибкой: ключ отправителя не подходит для получателя"
Ну тут видимо всё же придётся передавать ИД целиком с сериализацией.
(15) Добрый день? Вам удалось разобраться с этой ошибкой? У меня есть 2 проекта: один был реализован 2 года назад и там пуши отправляются до сих пор, второй делаю сейчас и получаю эту же ошибку. Со стороны 1С у меня механизм идентичный, разница только в проектах Google (под новую задачу создал новый проект)
(16) В целом да - разобрался. Там проблема была в том, что получение массива отключенных работает только на яблоках.
Могу поделиться примером базы - стучите.
(17) Спасибо, на свежую голову сам разобрался.
Подытожу для истории: получить ключ сервера для GCM API на данный момент можно только в Firebase console. Вот тут подробно расписано. Конкретно я споткнулся на том, что из-за всех этих экспериментов с проектами гугла и ключами для их API я забыл перегенерировать идентификатор мобильного клиента и он оставался подписан на другой проект гугла.
(20) испробовал всякое, но так и не смог отправить (получить) сообщение
Уведомление = Новый ДоставляемоеУведомление;
Для каждого IDGCM Из IDGCMs.IDGCM Цикл
Уведомление.Получатели.Добавить(IDGCM.Получить());
КонецЦикла;
Уведомление.Заголовок = "Заголовок";
Уведомление.Текст = "Текст";
Уведомление.Данные = "654654";
Уведомление.Наклейка = 2;
Уведомление.ИнтервалПовтора = 0;
Уведомление.ЗвуковоеОповещение = ЗвуковоеОповещение.ПоУмолчанию;
Если Уведомление.Получатели.Количество() > 0 Тогда
Попытка
мИсключенныеПолучатели = Новый Массив;
мИнформацияОПроблемахОтправкиДоставляемыхУведомлений = Новый Массив;
ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, "AIzaSyCp1J..............................jdazL8", мИсключенныеПолучатели,,мИнформацияОПроблемахОтправкиДоставляемыхУведомлений);
ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, "AAAApAOy1s4:..............................................................................................................................................VHePtr2APYA39UWA7rl8IM4e9GYPzf7", мИсключенныеПолучатели,,мИнформацияОПроблемахОтправкиДоставляемыхУведомлений);
Исключение
КонецПопытки;
КонецЕсли;
Показать
Пробовал ключ и новый и старый. По итогу в мИнформацияОПроблемахОтправкиДоставляемыхУведомлений получаю ошибку с "Не переданы данные для авторизации в сервисе отправки уведомлений.".
Что блин я не так делаю?
ДанныеАвторизации = Новый Соответствие; ДанныеАвторизации.Вставить(ТипПодписчикаДоставляемыхУведомлений.GCM, КлючСервера);
Мне этот совет помог.
Пробовал
на 8.3.11 в режиме совместимости с 8.3.8 - работает.
на 8.3.8 без режима совместимости - работает.
на 8.3.8 в режиме совместимости с 8.3.7 НЕ работает с ошибкой "Ошибка работы с Интернет: Удаленный узел не прошел проверку"
на 8.3.7 без режима совместимости НЕ работает с ошибкой "Ошибка работы с Интернет: Удаленный узел не прошел проверку"
использовал все самые последние варианты работы на момент 04.2018. firebase.google.com длинный ключ сервера.
Скорее всего ниже совместимости с версией 8.3.8 отправка средствами 1с не работает.
22.
maksakov.en@mmk.ru
12.02.18 07:34 Сейчас в теме
Спасибо за статью. Все получилось. Только есть вопросы:
1. Зачем обновлять ПодключитьОбработчикОжидания("Подключаемый_ОбновитьIDПодписчика", 7200)?
IDПодписчика у меня уже неделю один и тот же.
2. Кому-то удалось все же получить Push при закрытом моб. приложении (у меня нет)?
Вот что написано здесь: http://v8.1c.ru/o7/201502push/index.htm: Если мобильное приложение работает в фоновом режиме (неактивно) или вообще не исполняется (выгружено из памяти), то уведомление отображается операционной системой. При этом используется звуковое оповещение и наклейка. В iOS наклейка будет установлена у иконки мобильного приложения на домашнем экране, а в Android она задаёт число, которое будет отображено в сообщении на панели уведомлений. После того, как пользователь нажмёт на уведомление, будет активизировано (или запущено) мобильное приложение, и будет выполнен (если он подключён) обработчик уведомлений.
Спасибо за статью. До этого все работало исправно, а потом случилось такая странность. (см. скриншот).
При этом с этой ошибка платформа предлагает завершить работу, в исключение в коде не уходит
Был до этого ключ GCM , потом импортировал в FCM и при этом все осталось так же
Самое интересное что иногда проходит push иногда нет.
И то ли проблема в нашем все таки окружении или в каких то изменениях у google.
Ошибка одинаковая.
проблема началась 27 февраля 2018 года
Ранее работало без збоя.
Решения в интернете не нашел.
Есть решение данной проблемы?
Платформа: 1С:Предприятие 8.3 (8.3.11.3034)
Конфигурация: Сервер
Режим: Файловый (без сжатия)
Приложение: Тонкий клиент
Локализация: Информационная база: украинский (Украина), Сеанс: русский
Вариант интерфейса: Такси
Ошибки:
--------------------------------------------------------------------------------
12.03.2018 16:44:00
Ошибка работы с Интернет: Удаленный узел не прошел проверку
(25)Одноэсники рекомендуют в таком случае на сервере включить лог CAPI2 и искать ошибку в момент отправки пуша. Большинству помогла установка сертификата (ошибки на него указывал лог) во вложении (тип хранилища - локально.
Проблема в платформе, которая работает в режиме совместимости версии старше 8.3.7. Если есть возможность совместимость снять, то проверка сертификата будет выполняться средствами ОС.
Мне установка сертификата не помогла. Работаю с УПП в режиме совместимости 8.2.13. Сегодня отпишу по разбору лога.
(27)
Спасибо.
Тоже увидели форум и там нашли решение. Нам установка сертификата помогла, мы в свое время заморочились и сняли совместимость.
https://partners.v8.1c.ru/forum/topic/1694511#prettyPhoto Там есть вариант и без снятия совместимости через запросы напрямую, минуя объекты 1С. Идет активное обсуждение.
(28) С проблемой столкнулся только вчера вечером и для начала решил опробовать всё, что связано с ошибками сертификатов. По итогу скорее всего опишу прямой запрос т.к. в логах шаром покати, только ошибки при установке нового сертификата т.к. удостоверяющий центр не отвечает, а копать дальше уже сил нет =/
(31) Спасибо, но мне помогла полумера с сертификатом =) Прямой запрос, к слову, тестировали... Не получилось ибо запрос всё равно сервер отправляет, а сертификата нет.
Сервер (2008R2) с которого push перестали отправляться. Платформа 8.3.10.2466 совместимость 8.2.13 клиент-сервер, обычные формы.
Что сделал. Так как логи CAPI2 ничего не показывали - установил Wireshark на сервер 1с, запустил и в момент отправки push в глаза бросилась ошибка "Unknown CA". Смотрю адрес сервера с которого получил ответ, забиваю его в IE - открылся гугл. Захожу в сертификаты сайта, скачиваю, смотрю наименование - GIA3.
Окей. 1й вариант - вбить его название в гугле и искать ключ сертификата. 2й вариант - разбирать сертификат в .pem формат через openssl, но это черезчур для моих навыков. 3й вариант - спросить на форуме, как я и поступил.
Ключ сертификата в спойлере. Если вбить в поисковик 1ю строку, то можно убедиться, что в инете их выкладывают и не составит труда найти его без помощи форумов.
Дописал его в cacert,pem. УБЕДИЛСЯ, что дата изменения у файла обновилась и только тогда перезапустил 1с сервер (не факт, что требуется). Вуаля, вопрос решён.
Написал прямым запросом, как в (30), только добавил параметр защищенное соединение:
АдресСервера = "fcm.googleapis.com/fcm/send";
ssl = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(
СпособВыбораСертификатаWindows.Выбирать),
Новый СертификатыУдостоверяющихЦентровWindows());
Соединение = Новый HTTPСоединение(АдресСервера,,,,,,ssl);
И еще. Долго бился, не мог понять почему приходит ответ Unauthorized, в итоге оказалось, что в консоли Firebase в свойствах проекта нужно брать ключ АПИ не из общих параметров а на закладке Cloud Messaging.
ssl = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(
СпособВыбораСертификатаWindows.Выбирать),
Новый СертификатыУдостоверяющихЦентровWindows());
Соединение = Новый HTTPСоединение(АдресСервера,,,,,,ssl);
Руслан, не могли бы вы подсказать. Писал прямым запросом. Получается принимать пуш через параметр notification(т.е в фоновом режиме) , а вот с параметром data не получается. Пуш не приходит в открытом приложении
(80) Приложение нативное или на мобильной платформе?
У меня формирование сообщения сделано вот так (по сути тело вставляется два раза, один раз для обработки на клиенте в фоновом режиме, другой для обычного режима)
само сообщение: ТелоСообщения
для уведомления: ПараметрыУведомления
всё вместе: ПараметрыСообщения
ТелоСообщения = Новый Структура;
ТелоСообщения.Вставить("title", ДанныеСообщения.Заголовок);
ТелоСообщения.Вставить("body", ДанныеСообщения.Сообщение);
ТелоСообщения.Вставить("document_guid", ДанныеСообщения.Идентификатор);
ПараметрыУведомления = Новый Структура;
ПараметрыУведомления.Вставить("title", ДанныеСообщения.Заголовок);
ПараметрыУведомления.Вставить("body", ДанныеСообщения.Сообщение);
ПараметрыУведомления.Вставить("data", ТелоСообщения);
ПараметрыСообщения = Новый Структура;
ПараметрыСообщения.Вставить("to", ТокенПолучателя);
ПараметрыСообщения.Вставить("data", ТелоСообщения);
ПараметрыСообщения.Вставить("notification", ПараметрыУведомления);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ПараметрыСообщения);
СтрокаТелоЗапроса = ЗаписьJSON.Закрыть();
Приложение нативное. Мне кажется, моя проблема в том, что на клиенте я неправильно делаю вывод сообщения. Буду признателен, если подскажите. Получается, в обработчик доставляемых уведомлений вы передаете ПараметрыУведомления?
т.е как-то так?
Процедура ПриНачалеРаботыСистемы()
#Если МобильноеПриложениеКлиент Тогда
ДоставляемыеУведомления.ПодключитьОбработчикУведомлений("Подключаемый_ОбработкаУведомления");
#КонецЕсли
КонецПроцедуры
Процедура Подключаемый_ОбработкаУведомления(ПараметрыУведомления, Локальное, Показано) Экспорт
#Если МобильноеПриложениеКлиент Тогда
Сообщить(ПараметрыУведомления);
#КонецЕсли
КонецПроцедуры
33.
maksakov.en@mmk.ru
19.03.18 13:05 Сейчас в теме
Сначала все работало, потом стало выдавать
Ошибка работы с Интернет: Удаленный узел не прошел проверку
обновил платформу до 8.3.11.3034 теперь такая ошибка у меня:
{ОбщаяФорма.ОтправитьPushсообщение.Форма(41)}: Ошибка при вызове метода контекста (Отправить)
ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, ЭтотОбъект.КлючСервера);
по причине:
Не переданы данные для авторизации в сервисе отправки уведомлений.
возникло предположение а не проблема ли это различия мобильной платформы и стационарной ид подписчика то получается в платформе 8.3.8 например и естественно посылая пуш с 8.3.11 будет ошибка сертификата - есть у кого время проверить гипотезу?
запустил под 8.3.8 без использования режима совместимости ошибка пропадает но к сожалению не могу позвонить отключить совместимость. Есть еще другие решения этой задачи?
(39) установка сертификата выше по сообщениям сработала GTSGIAG3.crt
и еще замечание
//так работает
ДанныеАвторизации = Новый Соответствие;
ДанныеАвторизации.Вставить(ТипПодписчикаДоставляемыхУведомлений.GCM, Ключ);
ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, ДанныеАвторизации);
//а так можно было раньше, больше не работает
//ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, Ключ);
(41) user623969_dusa, огромное спасибо. Уже сломала голову и замучала техподдержку на v8. Две недели не отправлялись пуши на андроид. Грешила на смену мобильной платформы (как раз совпало, что перешли на 8.3.12), очередной перевыпуск сертификата гугла и прочее, а дело в маленьком кусочке кода
(45) Еще раз уточню:
1. Установили сертификат из (27)
2. Сделали вызов как в (39)
3. Режим совместимости оставили 8.3.6
4. Платформа 8.3.10.2667
И все работает?
И какая у Вас ОС?
(44) мне нужна совместимость 8.3.8 всего то но проблема возникла у тех кто обновил платформу на 8.3.10 она возникла не просто из-за повышения совместимости а из-за смены платформы, с 8.3.9 не пробовал
(48) Неправда. Проблема возникла не из-за обновления платформы, а на пустом месте. Пришло время и старый сертификат истёк. Для сервера мало кто следит за сроками сертификатов.
Вопрос уже был решен.
Если режим совместимости 8.3.7+ то ищем сертификат GIA3 в консоле certmgr.msc и проверяем даты. Просроченный обновляем.
Если 8.3.7 и менее, то пишем ключ сертификата в cacert.pem
привет всем! много ваших советов помогло. но столкнулся с такой штукой. 1с-ка отправляет уведомление но приложение не отображает текст(пишет null). но когда отправляю с разных сайтов все получается. в чем может быть дело?
Спасибо, автору!!! После танцев с бубнами, но таки взлетело!
8.3.12.1440 (без режима совместимости) и 8.3.11.61 (мобильная). Сертификат безопасности понадобился.
пробую сделать то же самое только для iOS
в итоге не получается отправить сообщение.
на сколько я знаю для отправки уведомления APNS необходимо в операторе во второй параметр "ДанныеАутентификации"
подсунуть Файл сертификата (а не ключСервера, как это на андроиде), необходимый для подключения к службе доставки "Apple Push Notification Service" (расширение .pem). у кого-то получилось это сделать, если да, то какие были особенности, у меня что-то никак не взлетит и сертификат сгенерил и подсунул его в виде макета, но уведомление не проходят, ошибок со стороны 1с не выходит
(60) Мне тоже кажется, что 1С до сих пор использует GCM а не FCM. Но я в принципе использую http запросы к этим сервисам. Стандартный класс 1С от версии к версии может вести себя не предсказуемо.
Всё ок, только что то не робит и пуш не приходит( Печаль беда. А ещё постоянно ругается на ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, КлючСервера);, так как думает что я это буду в мобилке юзать
Решил попробовать PUSH и уже на первом этапе застрял -
IDПодписчика = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений("10412********");
выдает ошибку
{Обработка.Тест.Форма.Форма.Форма(498)}: Ошибка при вызове метода контекста (ПолучитьИдентификаторПодписчикаУведомлений)
по причине:
Не удалось получить идентификатор подписчика push-уведомлений.
Мобильная платформа 8.3.12.74. Подскажите что не так то(
(64) если контекст вызова правильный - клиент мобильное приложение, тогда надо смотреть правильно ли заведен проект - из первого что приходит на ум, проверить разрешения на ip, которые могут получать идентификатор
(67) First of all, pay attention to the server address 192.168.0.14 (you need to change to your current one).
Then make sure that the client sends the recipient's identifier to the server (in the sending form, the lowest field should be filled in).
And there are a lot of nuances with the publication of a web service and a mobile application.
And of course here
DeliverableNotificationSend.Send (Notification, ServerKey);
must be changed to Соответствие (I do not know the English equivalent)
Please provide more error information.
Ошибка работы с Интернет: Удаленный узел не прошел проверку
Перелопатил многие варианты... в итоге заработало по следующему сценарию:
1. cacert.pem с сайта ИТС
2. добавляем Google Internet Authority G3 (взять можно чуть ли не на любом компьютере сертификат с расширением .crt, преобразовать к pem по сценарию https://infostart.ru/public/79494/) WireShark по-прежнему ловит ошибку Unknown CA. Думал, что с моими манипуляциями что-то не то, а на деле все оказалось проще. Случайно обратил внимание, что сертификат GlobalSign в cacert.pem, служащий корневым для GIAG3, истек еще в 2014.
3. добавляем актуальный GlobalSign в cacert.pem
PROFIT
Платформа: 1С:Предприятие 8.3 (8.3.11.2867)
Режим совместимости: 8.3.4
Клиент-сервер
(73) Можете дать готовый cacert.pem? Я так понял в предоставленном Вами уже вставлен GIAG3.txt, я попробовал добавить в конец еще GlobalSign.txt, но нифига, все равно вылетает та же ошибка. Какого черта, почему все так сложно? Почему не получается просто по ключу сервера, если в документации такой способ разрешен?
Хотелось все это попробовать...
Скачал архив. Создал базы. Что дальше делать - не понятно.
Будьте добры, "разжуйте" для "чайников".
Как это развернуть за пресловутые "20 минут" свободного времени?
(74) компилить мобильное приложение. Научить это делать за 20 не выйдет. Гилев за пять вечеров учит. Курс бесплатный.
Так же вопрос автору. В качестве сервера может выступать второй мобильный клиент? Какая скорость такого общения? В шахматы в режиме онлайн сможет работать?
(75) МенеджерОтправкиДоставляемыхУведомлений не доступен на мобильном устройстве, так что push с МУ на МУ средствами мобильной платформы 1С отправить не получиться. Нужен посредник в виде десктопной платформы.
(78) Получилось ли доставить push уведомление на iOS устройство через https://pushnotifications.1c.com ? Если да, то подскажите, пожалуйста, в чем там отличие от отправки на android устройство.
Ребят, как поведет себя отправка через push уведомления от сервера к мобильным приложениям данных json? Причем json может быть огромным.
Т.к. на стороне мобильной платформы нет http сервисов, универсальный обмен json не подойдет, т.к. отсылка идет со стороны сервера. Со стороны мобильного приложения запрашивать обновления и синхронизацию не хочу.
В СП
МенеджерОтправкиДоставляемыхУведомлений (DeliverableNotificationSendManager)
Примечание:
Суммарная длина полей уведомления в системе APNS не может превышать 2 КБайт. Суммарная длина полей уведомления в системе GCM не может превышать 4 КБайт. При превышении установленного лимита будет сгененировано исключение.
у меня 8.3.12 нет примечания к FCM, предполагаю там тоже есть ограничения
(88) Хмм. Сейчас не могу глянуть. Относится это к свойству "Данные"? Я вчера пробовал сделать, у меня уведомление с локальной тачки (сервер) отправляется, но на смартфон ничего не приходит. Попробую вечером ещё раз... (вроде делал всё по инструкции)
Перенос данных КА 1.1 => КА 2 / УТ 11 (перенос документов, начальных остатков и справочной информации из "1С:Комплексная автоматизация", ред.1.1 в "1С:Комплексная автоматизация", ред. 2.х)
Перенос данных КА 1.1 => КА 2 / УТ 11 (перенос документов, начальных остатков и справочной информации из "1С:Комплексная автоматизация", ред.1.1 в "1С:Комплексная автоматизация", ред. 2.х)