На мобильном устройстве получен идентификатор устройства. Но не из консоли, не из приложения так ни разу уведомление и не пришло. На данный момент используется мобильная платформа для отладки. Тестировалось начиная с 8.3.18. Сейчас стоит уже 19.
Все как один пишут только, что там все легко. Нет, не легко. И не понятно.
Готовы купить консультацию специалиста, который знает решение этого вопроса. Который сможет подключиться к компьютеру и показать/рассказать что делаем не правильно.
(1)И так. Уведомления заработали. В принципе ровно так как хотел.
Были проверены мобильные платформы версий 8.3.18 и 8.3.19. Уведомления на них НЕ РАБОТАЮТ. Это и ввело в заблуждение, что код ошибочный.
Отдельная благодарность spacecraft. Проконсультировал что и как должно быть.
Как оказалось наши знания были полностью актуальными. spacecraft их подтвердил своим опытом. Спасибо огромное еще раз. Небольшая компенсация Вам за потерянное время.
И так, для таких же как и мы.
Мы использовали мобильную платформу для подключения к опубликованному мобильному приложению. Для отладки. Видимо этот вариант не отрабатывает как надо. Вопрос конечно, а где еще работает не так как надо?!)))
Для начала необходимо организовать обмен между приложением и центральной базой.
Тут достаточно простая статья
Статья на ИТС
В консоле firebase. https://console.firebase.google.com/ Создать проект. Назвать его как угодно.Затем перейти в настройки на закладку Cloud Messaging.
там увидите поля Server key и Sender ID. Эти поля лучше хранить где нибудь в основной базе.
Server key - необходим для отправки
Sender ID - для формирования идентификатора на мобильном устройстве.
Затем в мобильном приложении в ПриНачалеРаботыСистемы следующий код
#Если МобильноеПриложениеКлиент Тогда
Попытка
НомерПриложенияGoogleCloud = ОбменДанными.ПолучитьНомерПриложенияGoogleCloud();
ИдентификаторПодписчикаУведомлений = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений(НомерПриложенияGoogleCloud);
ОбменДанными.ПередатьИдентификаторПодписчикаУведомлений(ИдентификаторПодписчикаУведомлений);
Исключение
КонецПопытки
#КонецЕсли
Показать
НомерПриложенияGoogleCloud - получается из основной базы.
В консоле firebase на закладке GENERAL. В поле Your apps. Добавить приложение (в моем случае для андройда).
Указать Android package name при создании. Это важный момент. Это имя необходимо взять в сборщике мобильного приложения в справочнике "Мобильные приложения" для группы. В разделе "Идентификаторы мобильных приложений".
Затем из консоли из вновь созданного приложения выгрузить файл google-services.json.
И добавить его в соответствующее поле в сборщике при создании приложения.
Смысл по сути прост.
Мобильное приложение генерирует идентификатор устройства и передает его в основную базу. Основная база по какому то событию использую этот идентификатор отсылает уведомление с помощью сервиса firebase.
Код отправки из основной базы.
АдресСервера = "fcm.googleapis.com";
АдресРесурса = "/fcm/send";
ssl = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение(АдресСервера,,,,,,ssl);
ТелоСообщения = Новый Структура;
ТелоСообщения.Вставить("title", ПараметрыУведомления.Заголовок);
ТелоСообщения.Вставить("name", ПараметрыУведомления.Заголовок);
ТелоСообщения.Вставить("sound", "default");
ТелоСообщения.Вставить("text", ПараметрыУведомления.Текст);
ПараметрыСообщения = Новый Структура;
ПараметрыСообщения.Вставить("registration_ids", МассивУстройств); // получаем на мобилках, как и при GCM ( IDПодписчика = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений());
ПараметрыСообщения.Вставить("data", ТелоСообщения);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ПараметрыСообщения);
СтрокаТелоЗапроса = ЗаписьJSON.Закрыть();
Запрос = Новый HTTPЗапрос(АдресРесурса);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("Authorization", "key="+КлючСервера);
Запрос.УстановитьТелоИзСтроки(СтрокаТелоЗапроса, КодировкаТекста.UTF8);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON);
Показать
МассивУстройств - это массив с идентификаторами устройств.
Оповещения приходят мгновенно. И очень приятно наконец-то их получить спустя несколько дней работы, а может и недель.
(2)Редми ноут 9 про. Гугл аккаунт активирован. Телефон, в принципе, поддерживает все, что есть на данный момент. Уведомления от других приложений приходят стабильно)))
(9) проверьте еще раз полученный id устройства и как его получали.
Там важно получить именно так:
IDПодписчика = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений()
И передавать массив этих id.
Код показали бы.
Вот я об этом и говорил. Не нужно передавать номер!
Вот так должно быть:
ИдентификаторПодписчикаУведомлений = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений();
(12)прошу прощения. Старый код. Номер не передаем туда. Подправил так как сейчас сделано. Но прошу заметить, что идентификатор устройства одинаковый, что с передачей номера отправителя, так и без. Узнать как-то можно, может он реально не корректный?
Вспомните у себя на телефоне любое приложение. Типа вайлбериза. Периодически приходят всякие уведомления. О доставке например товара. Так вот мне нужно тоже самое.
(21)нет, не говорит. Я вам не говорил, что приложение не запущено. Я проверял и с запущенным и с закрытым. Мне кажется, что как только уже не проверял.
(2)
(2) Вот да, после прочтения поста, возникает ощущение что дело в чем-то простом и неожиданном, на что не подумаешь.
Представьте что вы тайный враг вышей разработки, чтобы вы втихаря сделали чтобы пуш не работал?
(4)Прошу прощения, если это какой-то юмор, то я не совсем его понял. Уже очень устали от пустой болтавни. Прошу не обижаться, к вам не относится. Хочется уже конкретного решения.
(1)И так. Уведомления заработали. В принципе ровно так как хотел.
Были проверены мобильные платформы версий 8.3.18 и 8.3.19. Уведомления на них НЕ РАБОТАЮТ. Это и ввело в заблуждение, что код ошибочный.
Отдельная благодарность spacecraft. Проконсультировал что и как должно быть.
Как оказалось наши знания были полностью актуальными. spacecraft их подтвердил своим опытом. Спасибо огромное еще раз. Небольшая компенсация Вам за потерянное время.
И так, для таких же как и мы.
Мы использовали мобильную платформу для подключения к опубликованному мобильному приложению. Для отладки. Видимо этот вариант не отрабатывает как надо. Вопрос конечно, а где еще работает не так как надо?!)))
Для начала необходимо организовать обмен между приложением и центральной базой.
Тут достаточно простая статья
Статья на ИТС
В консоле firebase. https://console.firebase.google.com/ Создать проект. Назвать его как угодно.Затем перейти в настройки на закладку Cloud Messaging.
там увидите поля Server key и Sender ID. Эти поля лучше хранить где нибудь в основной базе.
Server key - необходим для отправки
Sender ID - для формирования идентификатора на мобильном устройстве.
Затем в мобильном приложении в ПриНачалеРаботыСистемы следующий код
#Если МобильноеПриложениеКлиент Тогда
Попытка
НомерПриложенияGoogleCloud = ОбменДанными.ПолучитьНомерПриложенияGoogleCloud();
ИдентификаторПодписчикаУведомлений = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений(НомерПриложенияGoogleCloud);
ОбменДанными.ПередатьИдентификаторПодписчикаУведомлений(ИдентификаторПодписчикаУведомлений);
Исключение
КонецПопытки
#КонецЕсли
Показать
НомерПриложенияGoogleCloud - получается из основной базы.
В консоле firebase на закладке GENERAL. В поле Your apps. Добавить приложение (в моем случае для андройда).
Указать Android package name при создании. Это важный момент. Это имя необходимо взять в сборщике мобильного приложения в справочнике "Мобильные приложения" для группы. В разделе "Идентификаторы мобильных приложений".
Затем из консоли из вновь созданного приложения выгрузить файл google-services.json.
И добавить его в соответствующее поле в сборщике при создании приложения.
Смысл по сути прост.
Мобильное приложение генерирует идентификатор устройства и передает его в основную базу. Основная база по какому то событию использую этот идентификатор отсылает уведомление с помощью сервиса firebase.
Код отправки из основной базы.
АдресСервера = "fcm.googleapis.com";
АдресРесурса = "/fcm/send";
ssl = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение(АдресСервера,,,,,,ssl);
ТелоСообщения = Новый Структура;
ТелоСообщения.Вставить("title", ПараметрыУведомления.Заголовок);
ТелоСообщения.Вставить("name", ПараметрыУведомления.Заголовок);
ТелоСообщения.Вставить("sound", "default");
ТелоСообщения.Вставить("text", ПараметрыУведомления.Текст);
ПараметрыСообщения = Новый Структура;
ПараметрыСообщения.Вставить("registration_ids", МассивУстройств); // получаем на мобилках, как и при GCM ( IDПодписчика = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений());
ПараметрыСообщения.Вставить("data", ТелоСообщения);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ПараметрыСообщения);
СтрокаТелоЗапроса = ЗаписьJSON.Закрыть();
Запрос = Новый HTTPЗапрос(АдресРесурса);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("Authorization", "key="+КлючСервера);
Запрос.УстановитьТелоИзСтроки(СтрокаТелоЗапроса, КодировкаТекста.UTF8);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON);
Показать
МассивУстройств - это массив с идентификаторами устройств.
Оповещения приходят мгновенно. И очень приятно наконец-то их получить спустя несколько дней работы, а может и недель.
(25) массив устройств каким образом определяется? то есть пуш выходит на всех устройствах где установлено приложение, а если надо отправить конкретному пользователю?