gifts2017

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

Опубликовал Дима Левин (playertwo) в раздел Программирование - Мобильные приложения

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

Ознакомившись со статьей на зазеркалье, было опасение, что с "не 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 формате и все.

Скачать файлы

Наименование Файл Версия Размер
PushTest 20
.epf 7,55Kb
02.09.15
20
.epf 1 7,55Kb Скачать

См. также

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

Словил вот такую ошибку при отправке уведомления из 1С. Хотя из другой программы с данным сертификатом все нормально отправляется и доставляется на телефон.
Сдается мне, что я накосячил при конвертации сертификата в формат PEM. Не могли бы Вы подсказать, каким образом корректно конвертировать сертификат в нужный формат?
2. Дима Левин (playertwo) 23.09.15 18:02
Как-то так было
openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes
3. Алексей (LexaSH) 25.09.15 07:49
Спасибо, все получилось.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа