Обработка push уведомлений отправленных не через 1с

1. MaiorovYury 10 17.04.19 10:46 Сейчас в теме +2 $m
Всем доброго дня!
Есть мобильное приложение написанное на 1с и бэкэнд на PHP.
Так вот когда push уведомление отправляю с сервера 1с, то оно штатно обрабатывается в мобильном приложении (отлавливается тут ДоставляемыеУведомления.ПодключитьОбработчикУведомлений и обработчик выполняется), но если push отправить напрямую из google консоль или посредством вызова GCM API, то на телефон оно приходит, но в мобильном приложении никак не обрабатывается.
Плюс они выглядят немного иначе - в пуше из 1с есть икнока приложения, а через GCM эту картинку вставить мне не получается.
Отсюда возникло предположение, что наверное 1с как-то по-хитрому отправляет push. Может там нужно что-то в теле вызова специальное передать, чтобы 1с стала его отлавливать. Кто-нибудь сталкивался с таким?)

За правильный ответ обещаю 2 мани)
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user623969_dusa 17.04.19 11:04 Сейчас в теме
(1) ну так надо к сообщению прикреплять идентификатор мобильного приложения xml файл по нему система понимает что это сообщение 1с и сообщение обрабатывается нужным приложением 1с
5. MaiorovYury 10 17.04.19 14:14 Сейчас в теме
(3) а как получить этот xml файл? Что в нем должно быть?
8. user623969_dusa 17.04.19 14:27 Сейчас в теме
(5) получается на мобильном
примерно ключ выглядит так:
<DeliverableNotificationSubscriberID xmlns="http://v8.1c.ru/8.3/data/ext" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<subscriberType>GCM</subscriberType>
<deviceID>APA91bHfBUrFzUffvQcpCQ7nCrUlrpbai-Nfj3CtbWgS1H-Mx2vTxx5F1PMKPIzxBqoRf8ggf4-AGX5NKspJAf52iR8TzGQbTq30NYDyIgazMooAoBC1GXzuVGIIt5NygTdFBQk­k3</deviceID>
<applicationID>com.imiaprogrammy</applicationID>
<databaseID/>
</DeliverableNotificationSubscriberID>
кстати я получил предупреждение что сервер GCM прекращает работу и надо использовать FCM, но до 29 мая время разобраться еще есть
9. MaiorovYury 10 17.04.19 14:33 Сейчас в теме
(8) сейчас проверю
И да, я в курсе что надо переходить на FCM
Но пока еще не нашел работающей с FCM платформы 1с
Даже тонкий клиент падает, когда пытаешься FCM уведомление отправить.
Баг зарегистрирован (https://bugboard.v8.1c.ru/error/000051057) и сказано, что исправлен в 8.3.14.1565, но у меня и на это платформе проявляется
И мобильный клиент падает, когда через FCM API отправляешь уведомление

Или может у вас получилось где-то в 1с настроить FCM?
11. MaiorovYury 10 17.04.19 14:53 Сейчас в теме
(8) что-то не пойму куда и что надо все же вставить

еще раз поясню
Я отправляю push через GCM API ( https://gcm-http.googleapis.com/gcm/send )
В теле запроса передаю вот что

{
"to":$token,
"notification":{
"title":"Hello",
"body":"Here is some body",
"icon":"res/drawable-hdpi-v4/icon.png"
},
"applicationID":"align.it.ru.my.mafia"
}

Но 1с все равно не отлавливает этот push, когда приложение открыто. Но если приложение свернуто или телефон заблокирован, то Push приходит и открывает приложение 1с. Но обработчик уведомления не отрабатывает
12. user623969_dusa 17.04.19 15:01 Сейчас в теме
(11) ну надо было учить английский в детстве
restricted_package_
name Optional, string This parameter specifies the package name of the application where the registration tokens must match in order to receive the message.

подходит для
<applicationID>com.imiaprogrammy</applicationID>

и по идее это уже определит для какого приложения будет пуш
13. MaiorovYury 10 17.04.19 15:18 Сейчас в теме
(12) к сожалению не помогло
Отправляю такой запрос

{
"to":"APA91bHpO3PKqZ5VPZvgpSZfr9gFr-...",
"notification":{
"title":"Title",
"body":"Here is some body",
"icon":"myicon"
},
"restricted_package_name":"align.it.ru.my.mafia"
}

Все равно мобильное приложение ничего не делает
14. user623969_dusa 17.04.19 15:32 Сейчас в теме
(13) странное имя пакета... установите приложение AppDetective и посмотрите имя пакета у установленного приложения, правильно пакет с com или ru.... если вы его называли по своим стандартам все равно не лишне убедиться что он верно введен.. вы в сборщике могли написать имя а он еще что-то от себя мог добавить при сборке
15. MaiorovYury 10 17.04.19 16:10 Сейчас в теме
(14) имя пакета правильное
Проверил его и через AppDetective и если я меняю его в запросе то получаю в ответ InvalidPackageName

Спасибо насчет restricted_package_ name. Нашел эту статью и там еще есть параметр в самом notification
click_action - Android, iOS Optional, string - The action associated with a user click on the notification. On Android, if this is set, an activity with a matching intent filter is launched when user clicks the notification.

Кажется сюда надо что-то передать. Но что непонятно.
А может есть какое-нибудь приложение, чтобы отловить push от 1с сервера и разобрать его - увидеть что внутри него?
Если я увижу что внутри push'а, который работает, то думаю смогу воссоздать его
16. MaiorovYury 10 17.04.19 18:52 Сейчас в теме
(14) пока вопрос открытый
Но я нашел вот что - есть понятие Notification channel. Это категория или группа уведомлений. Каждой такой категории можно поставить свой рингтон
Так вот у моего приложения сейчас есть 2 категории - Miscellanious и 1C Notifications
Теперь даже уведомления от 1с приходят с другим рингтоном
В API FCM можно передать параметр android_channel_id
Но как понять какое значение туда передать - пока не понятно
6. MaiorovYury 10 17.04.19 14:18 Сейчас в теме
(3) добавлю еще что у меня собранное приложение сборщиком приложений. То есть у меня мой готовый apk, а не приложение загруженное в мобильную платформу
7. ksen 17.04.19 14:26 Сейчас в теме
(6)Мое большое сообщение уже несколько часов на модерации, посмотрите раздел GCM https://its.1c.ru/db/v8312doc#bookmark:dev:TI000001547
10. MaiorovYury 10 17.04.19 14:50 Сейчас в теме
(7) это все проделано, и когда я отправляю Push с сервера 1с, то все срабатывает нормально
Но когда я отправляю push через GCM API (https://gcm-http.googleapis.com/gcm/send) оно приходит на телефон (то есть все настроено нормально), но мобильное приложение написанное на 1с и собранное в apk файл не переходит в обработчик уведомлений.
То есть если у меня открыто приложение и я отправляю push из 1с, то в мобильном приложении отображается "Привет" и данные обновляются
Если отправляю не через 1с, то ничего не происходит. Проблема только в этом.
2. MaiorovYury 10 17.04.19 10:47 Сейчас в теме
Вот тело запроса, которое я передаю в GCM API
С иконкой игрался, но так и не нашел что можно использовать, чтобы поменять иконку уведомления

{
"to":$token,
"notification":{
"title":"Hello",
"body":"Here is some body",
"icon":"icon.png"
}
}
4. ksen 17.04.19 11:40 Сейчас в теме
(2)можешь показать кусок побольше с *** вместо секретных данных?
Было ли проделано все это?
Внимание! Описание консоли разработчика приводится по состоянию на момент написания документации.

Следующие действия должен выполнить внедренец приложения-отправителя во время развертывания и настройки приложения-отправителя в компьютерной сети заказчика:

1. Необходимо войти в консоль разработчика (Google Developers Console, https://console.developers.google.com/project).

2. Необходимо создать проект (кнопка Создать проект).

3. После окончания создания проекта перейдите в свойства проекта (Управление ресурсами – <Имя вашего проекта> – меню (в правой части строки с именем приложения) – Настройки). На открывшейся странице необходимо запомнить номер, расположенный под надписью Номер проекта (после названия и идентификатора проекта). Этот номер проекта необходим для того, чтобы мобильное устройство смогло сформировать идентификатор получателя.

4. Необходимо включить возможность использования сервиса GCM. Для этого необходимо выбрать приложение, а затем использовать команду меню Продукты и сервисы – Диспетчер API (меню доступно в левом верхнем углу страницы, рядом с надписью Google APIs). На станице Библиотека следует ввести в поле ввода Google Cloud Messaging. В списке ниже поля ввода выбрать пункт Google Cloud Messaging, и на открывшейся странице нажать гиперссылку Включить (в верхней части страницы, справа от надписи Google Cloud Messaging).

5. Необходимо получить ключ программного интерфейса (Ключ API). Для этого необходимо выбрать в левой части страницы пункт меню Учетные данные. В разделе Учетные данные следует нажать кнопку Создать учетные данные и в выпадающем меню выбрать Ключ API. После создания ключа нажать кнопку Применить ограничения для ключа в получившемся диалоге. В разделе Ограничения ключа необходимо выбрать пункт IP-адреса (веб-серверы, задания cron и т. п.) и в поле Принимать http-запросы от серверов со следующими IP-адресами указать IP-адрес сервера, который будет выступать отправителем для вашего приложения. Другими словами в данном поле рекомендуется указать IP-адрес (или адреса) компьютера, с которого прикладное решение будет рассылать уведомления. Для тестовых проверок можно указать IP-адрес 0.0.0.0/0. Сменить список допустимых IP-адресов можно при редактировании свойств ключа API.

6. После окончания формирования ключа, он будет отображен в поле Ключ API. Получившееся значение необходимо использовать в качестве ключа аутентификации для отправки уведомлений (параметр ДанныеАутентификации метода Отправить() объекта МенеджерОтправкиДоставляемыхУведомлений). Рекомендуется относиться к данному ключу как к конфиденциальной информации. Получение данного ключа третьими лицами позволит им отправлять push-уведомления от вашего имени, например в случае, если при создании ключа не указывались конкретные значения IP-адресов.

Получившийся ключ программного интерфейса (Ключ API) необходимо предоставить внедренцу приложения-отправителя для указания в настройках приложения. Вышеописанные действия не требуется выполнять, если рассылка уведомлений выполняется через сервис фирмы «1С».
17. artist17 09.08.19 09:03 Сейчас в теме
(2) Получилось решить задачу? Столкнулся с тем же при переходе на FCM https://fcm.googleapis.com/fcm/send
18. MaiorovYury 10 20.09.19 14:43 Сейчас в теме
(17) нет вопрос открытый
Но с апреля не пытался ничего делать, может уже на новых платформах и работает
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот