В 1С толстом клиенте, пользователь нажимает кнопку “Отправить уведомление участникам бонусной системы”, далее 1С-конфигурация отправляет сообщение через сервис “Google Cloud Messaging” на приложение, установленное на устройстве, которое выводит “Push”.
Вот такой ранее работающий код отправки сообщений из 1С 8.3:
Ключ = "2323423"; //id полученный на developers.google.com, он намного сложней, это пример
Уведомление = Новый ДоставляемоеУведомление;
DeviceId = Выборка.DeviceId; //переданное с устройства, такое же сложный как на сервере
Если Не ПустаяСтрока(DeviceId) Тогда
Получатель = ПолучитьПолучателя(DeviceId);
Уведомление.Получатели.Добавить(Получатель); //Вот здесь был массив получателей
Иначе
продолжить;
КонецЕсли;
Уведомление.Заголовок = "Message";
Уведомление.Текст = Заголовок;;
Уведомление.Данные = Сообщение;
Если Уведомление.Получатели.Количество() > 0 Тогда
Попытка
ОтправкаДоставляемыхУведомлений.Отправить(Уведомление,Ключ);
Исключение
КонецПопытки;
КонецЕсли;
//Взята из публикации http://info.capitally.ru/public/394486/ замена для GCM
Функция ПолучитьПолучателя(DeviceID,_Тип = "GCM") Экспорт
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"), _Тип);
НовыйСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
Подписчик = НовыйСериализаторXDTO.ПрочитатьXDTO(xdtoПодписчик);
Возврат Подписчик;
КонецФункции
Вывел вот такую ошибку:
Полный текст:
Ошибка при вызове метода контекста (Отправить): Отправка сообщения 1 через GCM завершилась ошибкой
С чем связано ошибка, предположения:
- превышение длины сообщения
- выпали device из установленных
- при тестировании количество устройств было меньше
- удален, аннулирован ключ в Api гугл, изменены права
Решение проблемы отправки:
Банально переписан код на отправку одного сообщения каждому устройству.
- Грозит, залипанием интерфейса при больших списках устройств, но, если это гарантирует отправку, это нормальное решение.
- При этом ошибка не вылетела ни на одном устройстве – происходит только при пакетной отправке.
- Также этот алгоритм позволяет отслеживать надолго выпадающие устройства и убирать их из рассылки (если ошибка все-таки будет возникать)
Реклама — виновница того, что народ выбрал себе в вожди Гитлера. Реклама призвана убеждать граждан, что ситуация нормальна, когда она катастрофически ненормальна.