Ошибка при вызове метода контекста отправить GCM

В 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Подписчик);

Возврат Подписчик;

КонецФункции

Вывел вот такую ошибку

oshibka-pri-vyzove-metoda-konteksta-otpravit-gcm

Полный текст:

Ошибка при вызове метода контекста (Отправить): Отправка  сообщения 1 через GCM завершилась ошибкой

С чем связано ошибка, предположения:

  • превышение длины сообщения
  • выпали device из установленных
  • при тестировании количество устройств было меньше
  • удален, аннулирован ключ в  Api гугл, изменены права

Решение проблемы отправки:

Банально переписан код на отправку одного сообщения каждому устройству. 

  • Грозит, залипанием интерфейса при больших списках устройств, но, если это гарантирует отправку, это нормальное решение.
  • При этом ошибка не вылетела ни на одном устройстве – происходит только при пакетной отправке.
  • Также  этот алгоритм позволяет отслеживать надолго выпадающие устройства и убирать их из рассылки (если ошибка все-таки будет возникать)

 

 

 

Реклама — виновница того, что народ выбрал себе в вожди Гитлера. Реклама призвана убеждать граждан, что ситуация нормальна, когда она катастрофически ненормальна.

— Фредерик Бегбедер