Если мобильное приложение работает в фоновом режиме (неактивно) или вообще не исполняется (выгружено из памяти), то уведомление отображается операционной системой. При этом используется звуковое оповещение и наклейка. В iOS наклейка будет установлена у иконки мобильного приложения на домашнем экране, а в Android она задаёт число, которое будет отображено в сообщении на панели уведомлений. После того, как пользователь нажмёт на уведомление, будет активизировано (или запущено) мобильное приложение, и будет выполнен (если он подключён) обработчик уведомлений.
https://wonderland.v8.1c.ru/blog/push-i-lokalnye-uvedomleniya/
(2)Спасибо большое за ответ. Это написано в этой статье. Это все я читала. Не работают оповещения. Как протестировать работу подобных оповещений? На сколько понятно из описания, то мне как раз нужны локальные оповещения. Взаимодействия с центральной базой не нужно. Нужно, чтобы было оповещение о определенном событии в определенное время, конечно же при закрытом приложении. Как подобное реализовать?
В статье время срабатывания устанавливается через
ДатаПоявленияUTC
В синтакс-помощнике свойство выглядит так:
ДатаПоявленияУниверсальноеВремя
Может поэтому не выводится?
Если так, то сообщение не появляется вообще. Если убрать ДатаПоявленияУниверсальноеВремя то сообщение появляется при запуске системы. По сути не работает как надо.
Процедура ПриНачалеРаботыСистемы()
#Если МобильноеПриложениеКлиент Тогда
Уведомление = Новый ДоставляемоеУведомление;
Уведомление.Заголовок = "К сожалению, Вы не получите помидор.";
Уведомление.Текст = "К сожалению, Вы не получите помидор.";
Уведомление.ДатаПоявленияУниверсальноеВремя = Дата("20210723090600");
Уведомление.ЗвуковоеОповещение = ЗвуковоеОповещение.ПоУмолчанию;
//Уведомление.ИнтервалПовтора = 60;
ДоставляемыеУведомления.ДобавитьЛокальноеУведомление(Уведомление);
ДоставляемыеУведомления.ПодключитьОбработчикУведомлений("ПриПолученииУведомления");
#КонецЕсли
КонецПроцедуры
Процедура ПриПолученииУведомления(Уведомление, Локально, Показано) Экспорт
Если Локально Тогда
Сообщить("Прибыло уведомление с текстом: " + Уведомление.Текст);
Иначе
Сообщить("Прибыло Push-уведомление с текстом: " + Уведомление.Текст);
КонецЕсли;
КонецПроцедуры
Добрый день. Очень все это странно. Вчера тестила с этим кодом, что выше. И сегодня весь день в хаотичном порядке приходят уведомления. Это конечно круто, что все же работает как мне надо. Но вот только до сих пор не ясно как этим управлять. Если просмотреть
УниверсальноеВремя(ТекущаяДата())
То там время вообще отличается на 4 часа. Причем минус. Т.е. у меня 22:00:00, а универсальное показывает 18:00:00.
Меняла часовой пояс на сервере. Бесполезно, результат тот же.
Если кто-то знает в чем кроется причина, подскажите пожалуйста.
(10) Все верно. Универсальное время и будет отличаться. В мобильном устройстве все даты хранятся в универсальном формате. А выводятся уже в местном времени, согласно часового пояса, выставленного в Настройках. У вас пояс Казани, значит +4 часа.
(14)Ну я вроде бы по-русски пишу. Логика не понятна.
Вы не поверите, но лично на моей разработке сообщения то выводятся, то не выводятся. Если бы была понятна логика этого, я бы не создавала тему и не спрашивала.
Тестировала в прошлый раз, на след день мой телефон меня усыпал уведомлениями. Потом начала тестировать, телефон молчит до сих пор. На след день вывел одно уведомление и все. Как тут можно понять это? Описания нормального нет. А по тому что песть, типа все должно работать, но не работает.
В плане универсального времени вы хоть немного открыли истину. Об этом нигде не написано. Но все же уведомления не выводятся.
Буду очень признательна, если поможете разобраться с этим.
(15) Ну вот сейчас задал дату
УниверсальноеВремя(Дата("20210726090800"))
У меня тоже часовой пояс +4.
Сообщение вывелось. Насколько я понял, телефон не должен быть в спящем режиме
(16)Хм. Можете привести полный ваш код и скажите, пожалуйста, как спровоцировали выполнение этого кода? На кнопку повесили или как? Какие инструкции препроцессору употребляли? Как у вас сообщение вышло? И что значит спящий режим? У меня просто заблокирован телефон. С любого мессенджера приходят уведомления и отсюда приходили когда тестировала раньше. Вы поставили 8 утра, а во сколько выполнили код? Т.е. как настало 8 утра, у вас появилось уведомление?
Это с курсов пробный пример. Процедура на кнопке. Время было выставлено на 09-08. В заблокированном состоянии оповещения не было, а только разблокировал, сразу бзнынькнуло. Еще попробую для чистоты эксперимента.
Да! Мобильная платформа 8.3.18.41, если это важно. На новых платформах жаловались, что какие-то мобильные функции работают по-другому (если вообще работают).
(9)На сколько понятно, ПУШ это если нужно с сервера послать оповещение. Мне этого не нужно. Мне нужно оповестить пользователя о наступлении локального события. На каждом мобильном устройстве оно может быть свое.
(27)из сервера. мобильное приложение не отправляет (по крайней мере у меня). у меня весь процесс обработки идет на стороне сервера.
МассивИдентификаторПодписчика - Это массив идентификаторов кому надо отправить пуши
Процедура ОсновнойИнтерфейсДействие() Экспорт
ЗаголовокСообщения = "Начислены бонусы (тест)";
ТекстСообщения = "Вам начислены бонусы 325руб. Покупка на 3250руб.";
Н = Новый Структура;
Н.Вставить("Date","12312123");
ДанныеСообщения = Н;
ИдентификаторПодписчика = Справочники.ИнформационныеКарты.НайтиПоНаименованию("000 001").ИдентификаторПодписчика;
Н = Новый Массив;
Н.Добавить(ИдентификаторПодписчика);
ОтправитьPUSH_Android(Н, ЗаголовокСообщения, ДанныеСообщения, ТекстСообщения);
КонецПроцедуры
Показать
как получить идентификатор?
в мобильном приложении на клиенте:
#Если МобильныйКлиент ИЛИ МобильноеПриложениеКлиент ТОгда
ИдентификаторПодписчика = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений("____цифр из сайта fcm____");
ИдентификаторУстройства = ИдентификаторПодписчика.ИдентификаторУстройства;
#КонецЕсли
(28) С записью в JSON разобралась. С помощью вашего кода ошибок при отправке нет, но и оповещения никакие не приходят. Можно вас попросить чуть подробнее рассказать как вы реализовали у себя уведомления на телефоне?
На мобильном клиенте в процедуре ПриНачалеРаботыСистемы
#Если МобильноеПриложениеКлиент Тогда
Попытка
НомерПриложенияGoogleCloud = ОбменДанными.ПолучитьНомерПриложенияGoogleCloud();
ИдентификаторПодписчикаУведомлений = ДоставляемыеУведомления.ПолучитьИдентификаторПодписчикаУведомлений(НомерПриложенияGoogleCloud);
ИдентификаторУстройства = ИдентификаторПодписчикаУведомлений.ИдентификаторУстройства;
ОбменДанными.ПередатьИдентификаторПодписчикаУведомлений(ИдентификаторПодписчикаУведомлений);
Исключение
КонецПопытки
#КонецЕсли
Показать
НомерПриложенияGoogleCloud - 797785657074
Затем ИдентификаторУстройства передается в основное приложение.
В основном приложении код отправки ка у вас выше.
КлючСервера формате bF204hB2CYAhENo-BRXLBDzCYkOT2xu_g7reFIW037g2mZtJRQGicYMEwHVPVR-lKYNuO7r8QJEqcBXkpr41Gho1tRHEWPtWLcY-Vzp
(30)чтобы отправить уведомдение. Получите на клиенте приложения по вашему id 7977...идентификатор устройства. Когда его получите, поместите в js и передайте его на отправку. Так же не забутьте дать разрешение в приложении на получение уведомлений пуш
(31)Делаю все ровно точно также как Вы сейчас описали. В мобильном приложении получаю идентификатор устройства, передаю его в основное. Затем в основном вашим кодом запихиваю в json и отправляю. Код ответа приходит 200. Но... Оповещений нет.
Может в консоле firebase что-то еще нужно делать? А то что как-то легко прошла настройка. Точнее сказать ее практически и не было. Тупо создала проект и в настройках появились все эти данные.
(32)
если 200 - ушло. можете проверить отправив пуш через консоль FCM
В fcm ничего не надо. он прост в использовании в отличии от яблока (гемора дофига).
(38)Сейчас еще раз проверила код. Что передается с мобильного устройства в основное приложение. Туда передаю полностью идентификаторПодписчикаДоставляемыхУведомлений. Храню его в хранилище значений в основной базе. Ошибок при отправке нет. Уведомлений также нет.
Люди добрые, подскажите, пожалуйста, кто с этим разбирался. Как реализовать уведомления на андройде?
(41) судя по этой статье https://infostart.ru/1c/articles/606748/ брать ключ надо все же из другого места. И выглядит он иначе. У вас какой ключ используется? Где его получили?
Если взять из консоли разработчика гугл, то вот такая ошибка.
(33)Я использую опубликованное мобильное приложение. Через мобильную платформу подключаюсь к мобильному приложению. Если это имеет значение. МОжет нужно приложение полноценное компилировать? И в него добавлять что-то?