Отправка push-уведомления нативному iOS приложению 8.3.6

02.09.15

Разработка - Мобильная разработка

Для очередного проекта по созданию нативного iOS приложения, взаимодействующего с 1С, решили попробовать использовать встроенную функцию отправки push-уведомлений

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
PushTest
.epf 7,55Kb ver:1
60
60 Скачать (1 SM) Купить за 1 850 руб.

Ознакомившись со статьей на зазеркалье, было опасение, что с "не 1С-овским" мобильным приложением будут сложности.

Но единственным неочевидным моментом оказалось создание объекта ИдентификаторПодписчикаДоставляемыхУведомлений (DeliverableNotificationSubscriberID), который нужно добавлять в массив получателей доставляемого уведомления. Конструктора для этого объекта нет. Есть только функция на мобильном клиенте, возвращающая объект такого типа. 1С предлагает с помощью XDTO-сериализации передать его на сервер. В нашем случае нету 1С-овского мобильного клиента. Поиск в интернете дал только тему на партнерском форуме, которая подтверждает отсутствие нормального метода получения этого объекта.

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

Получился такой не очень изящный код

Функция ПолучитьПолучателя(DeviceID)
		
	xdtoПодписчик = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.3/data/ext","DeliverableNotificationSubscriberID"));
	xdtoПодписчик.DeviceID = DeviceID;
	xdtoПодписчик.SubscriberType = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.3/data/ext","DeliverableNotificationSubscriberType"), "APNS");
	НовыйСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
	Подписчик = НовыйСериализаторXDTO.ПрочитатьXDTO(xdtoПодписчик);
		
	Возврат Подписчик;
	
КонецФункции

DeviceID это DeviceToken в терминах iOS, получаемый приложением при регистрации в APNS. Остальные 2 поля объекта оставляем незаполненными, они не влияют на отправку в нашем случае.

В приложении вся обработка, которая отправляет push. В макет "ДанныеАвторизации" нужно загрузить ваш сертификат APNS в .pem формате и все.

ios мобильное приложение push apns ИдентификаторПодписчикаДоставляемыхУведомлений DeliverableNotificationSubscriberID ДоставляемоеУведомление DeliverableNotification

См. также

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    39747    112    163    

206

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    60414    200    103    

175

Логистика, склад и ТМЦ Сканер штрих-кода Терминал сбора данных Мобильная разработка Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

21000 руб.

28.04.2023    10134    16    2    

10

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    99233    602    189    

326

Мобильная разработка WEB-интеграция Программист Мобильная платформа Абонемент ($m)

Экспериментальный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между устройствами Simple и между Simple и бек-системами (например 1С). По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок для поддержки стабильного постоянного соединения, докачки больших файлов и работе в фоне. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

23.08.2024    1503    6    informa1555    1    

13

Мобильная разработка Мобильная платформа Абонемент ($m)

В этом релизе собрано много нового из области интерфейса, связи, хранения и важные новые способы управления. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

25.06.2024    2961    29    informa1555    0    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. LexaSH 23.09.15 13:41 Сейчас в теме
Не удалось определить тип сертификата. Возможно, переданный сертификат не предназначен для работы с APNs, либо представлен не в формате PEM.

Словил вот такую ошибку при отправке уведомления из 1С. Хотя из другой программы с данным сертификатом все нормально отправляется и доставляется на телефон.
Сдается мне, что я накосячил при конвертации сертификата в формат PEM. Не могли бы Вы подсказать, каким образом корректно конвертировать сертификат в нужный формат?
2. playertwo 101 23.09.15 18:02 Сейчас в теме
Как-то так было
openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes
3. LexaSH 25.09.15 07:49 Сейчас в теме
Спасибо, все получилось.
4. Aleksk75 26.01.17 16:16 Сейчас в теме
Подскажите на каких версиях 8.3.6 работает отправка на IOS?
5. Dan9l 03.03.17 09:50 Сейчас в теме
Если сообщения не приходят, куда нужно копать ?
Да и локальные уведомления работают странно, в запущенном приложении приходят, в отключенное приложение иногда приходят бешеной задержкой в 5-7 часов.
6. abion 20.07.17 04:03 Сейчас в теме
Если у Вас :

Не удалось определить тип сертификата. Возможно, переданный сертификат не предназначен для работы с APNs, либо представлен не в формате PEM.

или

Cannot determine the certificate type. Possibly the certificate is not issued for APNs or it does not have the PEM format.

то мне помогла замена / just replace

'friendlyName: Apple Push Services' на/by 'friendlyName: Apple Production IOS Push Services'

в секции Bag Attributes в файле pem.
10. user852614 30.08.19 13:34 Сейчас в теме
(6) Огромное человеческое спасибо!!! 3 часа из жизни...
7. user1071454 23.01.19 12:06 Сейчас в теме
Здравствуйте, не могли бы вы подсказать, как можно получить идентификатор пользователя на ios в мобильном приложении. Я знаю, что для android можно использовать ДоставляемыеУведомления.ПолучитьИдентификаторПодписчика("НомерПроектаGoogleCloud"). Что-то совсем запутался
8. LexaSH 24.01.19 10:05 Сейчас в теме
ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений()

Вызвать без параметров на мобильном клиенте. Можно с параметром, но на iOS параметр будет проигнорирован. Возвращает объект типа ИдентификаторПодписчикаДоставляемыхУведомлений().
Этот идентификатор нужно передать на сервер и там, сохранить его, например в узле обмена, в реквизите с типом ХранилищеЗначения.

Далее этот Идентификатор добавляется в массив "Получатели" объекта ДоставляемоеУведомление()
9. user1071454 24.01.19 12:10 Сейчас в теме
(8)Да, вчера прочитал документацию. Спасибо большое!
11. 1cspec 117 28.10.19 18:31 Сейчас в теме
"DeviceID это DeviceToken в терминах iOS, получаемый приложением при регистрации в APNS" - а где и как регистрируете для получения DeviceToken ?
12. 1cspec 117 28.10.19 19:48 Сейчас в теме
На iOS метод "ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений()" пишет ошибку "не удалось подключить идентификатор push уведомления"
13. FesenkoA 59 12.11.20 10:46 Сейчас в теме
14. aibasoft 11 13.04.21 18:12 Сейчас в теме
Доброго времени суток. В макет загрузил Development сертификат для Push,запустил и ввел id device, но после нажатия отправить ничего не происходит. А через Production сертификат вообще пишет: "Не удалось определить тип сертификата. Возможно, переданный сертификат не предназначен для работы с APNs, либо представлен не в формате PEM" хотя оба сертификата одинаково переконвертированы в .pem
Интересует пока с Dev сертификатом, почему ничего не происходит...
Куда копать подскажите пожалуйста.
15. McLer 126 29.04.21 19:07 Сейчас в теме
(14) проверьте APNs сертификаты в firebase (Project settings - Cloud Messaging - iOS app configuration - APNs Certificates)
туда надо загружать сертификаты .p12 но если их гугл примет значит они нормальные. Попробуйте ещё раз сконвертировать в .pem
Если гугл не принимает, значит заново выпускайте сертификаты.

А ещё при отправке пушей есть параметр МассивОшибок что там пишет? обычно там пишет верную причину отправки. А если у вас ничего не пишет, значит у вас платформа старая:
https://wonderland.v8.1c.ru/blog/ispolzovanie-protokola-http-2-dlya-posylki-push-uvedomleniy-v-ios/
aibasoft; +1 Ответить
16. aibasoft 11 30.04.21 11:57 Сейчас в теме
(15) Спасибо. Позже я все таки отправил Push через эту обработку, но после того как подключил через прослойку 1С. Путал токен с идентификатором подписчика, токен также в отладке нашел когда через прослойку https://pushnotifications.1c.com/ отправлял.
В итоге реализовал через эту прослойку, так как в моей конфигурации были модули которые могли работать с ним. Новичкам рекомендую через прослойку https://pushnotifications.1c.com/.
17. user1756538 29.04.22 11:26 Сейчас в теме
Добрый день. Кто - нибудь может скинуть ссылку откуда можно скачать APNS.pem и ключ отправителя для Android?
18. IgorMan2 07.11.22 23:12 Сейчас в теме
Получаю ошибку "MissingTopic", никто не встречал?

Уведомление = Новый ДоставляемоеУведомление;
	Уведомление.Заголовок = "Заголовок";
	Уведомление.Текст = "Текст";
	Уведомление.Получатели.Добавить(ПолучитьПолучателя("16f9d0876fb2d6....................5751dbf0f0ff1f21b5e72b8d"));
	
	ДанныеСертификата = Новый Соответствие;
	ДанныеСертификата.Вставить(ТипПодписчикаДоставляемыхУведомлений.APNS, Новый ДвоичныеДанные("c:\temp\prod.pem"));
	
	Ошибки = Новый Массив;
	ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, ДанныеСертификата,,, Ошибки);
Показать
Оставьте свое сообщение