Как исправить ошибки аутентификации и регистрации при отправке PUSH-уведомлений в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Настройка PUSH-уведомлений в экосистеме 1С — задача многоэтапная, требующая синхронизации основной базы, промежуточного сервиса 1С (push.1c.ru), сервиса Google Firebase (FCM) и самого мобильного приложения. Малейшая ошибка в ключах или идентификаторах приводит к отказу в обслуживании. В данной статье мы разберем, как последовательно устранить наиболее частые ошибки аутентификации.

Анализируем первую проблему: Ошибка Incorrect publisher application API KEY

Эта ошибка возникает на самом первом этапе взаимодействия, когда ваша основная база 1С пытается авторизоваться в облачном сервисе ОтправкаДоставляемыхУведомлений. Ошибка "Incorrect publisher application API KEY" однозначно указывает на то, что ключ, передаваемый в параметрах метода Отправить, не распознан сервисом 1С.

Рассмотрим типовой программный код, который может вызывать данную проблему:


Процедура ОтправитьУведомление(Уведомление, Пользователь) Экспорт 
    Выборка = ПланыОбмена.МобильноеПриложение.Выбрать; 
    Пока Выборка.Следующий() Цикл 
        Если Выборка.асИдентификаторПодписчикаДоставляемыхУведомлений <> Неопределено Тогда 
            Если Пользователь = Неопределено ИЛИ Пользователь = Выборка.Профиль Тогда 
                Идентификатор = Выборка.асИдентификаторПодписчикаДоставляемыхУведомлений.Получить(); 
                Если Идентификатор <> Неопределено Тогда 
                    Уведомление.Получатели.Добавить(Идентификатор); 
                КонецЕсли; 
            КонецЕсли; 
        КонецЕсли; 
    КонецЦикла; 

    Если Уведомление.Получатели.Количество() > 0 Тогда 
        ДанныеАутентификации = СокрЛП(Константы.асКлючДоступаОтправителя.Получить()); 
        УдаленныеТокены = Новый Массив; 
        // Попытка отправки через сервис 1С
        ОтправкаДоставляемыхУведомлений.Отправить(Уведомление, ДанныеАутентификации, УдаленныеТокены, Истина); 
        асНеИспользоватьИдентификаторы(УдаленныеТокены); 
    КонецЕсли; 
КонецПроцедуры

Важный нюанс: Ключ, который вы получаете в личном кабинете на сайте push.1c.ru, имеет строго определенный формат. Чаще всего он состоит из 53 символов. Проанализируем типичную ошибку: часто разработчики путают API KEY сервиса 1С и Server Key от Firebase.

Для решения этой проблемы выполним следующие шаги:

  1. Зайдем в личный кабинет на push.1c.ru.
  2. Скопируем ключ именно оттуда (а не из консоли Google).
  3. Убедимся, что при чтении из константы не добавляются лишние пробелы или символы переноса строк. Для этого используем СокрЛП().
  4. Если ошибка сохраняется, попробуем временно подставить ключ в код "намертво" (строкой), чтобы исключить проблемы с чтением из базы данных.

Разбираем вторую проблему: Ошибка PushService credentials not found

Как только мы победили авторизацию в сервисе 1С, может возникнуть следующая ошибка: "В уведомлении использовано незарегистрированное в сервисе мобильное приложение: PushService credentials not found". Это означает, что база данных успешно подключилась к 1С-овскому шлюзу, но шлюз не знает, кому "перепоручить" доставку уведомления в Google Firebase.

Выясним причину этой ситуации. Сервис 1С выступает посредником. Чтобы он мог отправить PUSH, в его настройках должно быть создано "Приложение", в котором прописаны ключи доступа к Firebase (FCM). Если идентификатор приложения, указанный в объекте Уведомление, не совпадает с тем, что зарегистрировано в личном кабинете push.1c.ru, произойдет ошибка.

Разберем, как правильно связать все компоненты:

Настройка сборки мобильного приложения с использованием JSON

Для современных версий Android и актуальных протоколов Google крайне важно правильно настроить сборщик мобильных приложений 1С. Если вы используете старую версию сборщика, она может запрашивать Client ID и Client Secret. Однако современный стандарт — это файл google-services.json.

Проанализируем процесс настройки в конфигурации:

  1. Переходим в настройки проекта в Firebase Console (иконка шестеренки).
  2. Скачиваем файл google-services.json для вашего Android-приложения.
  3. В 1С в справочнике или настройках, отвечающих за мобильное приложение (зависит от вашей конфигурации, обычно это свойства группы мобильного приложения), переходим на закладку "Для ОС Android".
  4. Именно туда загружаем полученный JSON-файл.

Если ваша версия сборщика слишком старая и просит Client ID, рекомендуем обновить версию мобильной платформы и сборщика. Использование устаревших идентификаторов часто приводит к тому, что Google блокирует запросы на доставку уведомлений.

Особенности получения идентификатора на мобильном устройстве

Даже при идеально настроенном сервере уведомление не дойдет, если мобильное приложение не "сообщило" основной базе свой уникальный токен. Рассмотрим, как это работает на стороне мобильного клиента.

В модуле мобильного приложения необходимо вызвать метод подключения:

ДоставляемыеУведомления.Подключить();

После этого в обработчике ПриПолученииИдентификатораДоставляемыхУведомлений вы получите уникальную строку-токен. Эту строку нужно отправить в основную базу и записать в реквизит, который мы видели в первом примере (асИдентификаторПодписчикаДоставляемыхУведомлений).

Важное замечание по Android 13 и выше: Теперь операционная система требует явного разрешения от пользователя на показ уведомлений. Убедитесь, что в манифесте приложения указано разрешение POST_NOTIFICATIONS, и оно запрашивается программно при запуске приложения. Без этого разрешения токен может быть получен, сообщение может быть отправлено без ошибок, но пользователь его никогда не увидит в шторке уведомлений.

Таким образом, успех отправки PUSH-уведомлений зависит от корректности всей цепочки: Ключ 1С (53 символа) -> Идентификатор приложения -> Server Key Firebase в кабинете 1С -> google-services.json в сборке APK -> Токен подписчика в базе 1С.

← На главную