Перейти к содержанию
Fire Monkey от А до Я
  • 0

Не могу вывести локальное уведомление


MrAnderson

Вопрос

Добрый вечер.

Подскажите пожалуйста уже наверно неделю читаю все подряд и ни как не могу понять.

Приложение из демо работает т.е. пуши локальные приходят а вот приложение созданное ранее не использовало эти уведомления после добавления не хочет их выводить.

Попробовал новый проект создать там все ок.

Что нужно добавить или где прописать что бы работали уведомления.

Если что продолжаю учиться.

Спасибо.

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
 You will have to make sure that your notification is a high priority, FCM will post it immediately

FCM attempts to deliver high priority messages immediately, allowing the FCM service to wake a sleeping device when necessary and to run some limited processing (including very limited network access). High priority messages generally should result in user interaction with your app. If FCM detects a pattern in which they don't, your messages may be de-prioritized

If your users interact with the notifcaiton FCM will not delay it. Background services may not be allowed in some cases in Android O but it doesn't mean you cannot send notifications

Also your notification will not be displayed if your not using notification channels, You can use this code to create notification channels

public void initChannels(Context context) {
if (Build.VERSION.SDK_INT < 26) {
    return;
}
NotificationManager notificationManager =
        (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel("default",
                                                      "Channel name",
                                                      NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Channel description");
notificationManager.createNotificationChannel(channel);}

Может кто нибудь помочь вот с этим? Вроде как ответ на вопрос.

Ссылка на комментарий
  • 0
В 21.11.2018 в 00:02, Barbanel сказал:

Посмотрите здесь

Также посетите гитхаб этого чувака, скачайте его библиотеку KastriFree. Там есть работающий пример уведомлений.

Как я понял, там только для определенной версии Delphi

Цитата

***** These instructions apply to Delphi 10.2.3 ONLY. You cannot apply this patch for any other version of Delphi *****

Получается у кого версия меньше (например 10.1) то обойти уже никак?

Еще интересно будет ли новая система разрешения работать в 10.3 из коробки (но это уже другой вопрос).

Ссылка на комментарий
  • 0
1 минуту назад, Yarpda сказал:

Еще интересно будет ли новая система разрешения работать в 10.3 из коробки (но это уже другой вопрос).

Здесь утверждается что работает.

Цитата

New Android Permission Model

Recent versions of the Android API have changed the mechanism to request permissions. The user can call PermissionsService.RequestPermissions (from the new System.Permissions unit) and pass it a reference to a routine that will be called with the users responses, and optionally a routine to display a rationale for the requested permission. See Android Permission Model for more information.

 

Ссылка на комментарий
  • 0
  • Администраторы

В 10.3 расширено апи уведомлений для возможности указывать канал уведомлений для андроида. Это должно решить вашу проблему.

Ссылка на комментарий
  • 0
21 час назад, Brovin Yaroslav сказал:

В 10.3 расширено апи уведомлений для возможности указывать канал уведомлений для андроида. Это должно решить вашу проблему.

Ага, осталось всего-то решить проблему перехода на 10.3... ?

Ссылка на комментарий
  • 0

Действительно в 10.3 уведомления тали появляться но по умолчанию без звука. Опции типа Notification.EnableSound не работают. Как я понимаю там должна быть работа с каналами, однако в примере ничего подобного нет. Как их создавать, как устанавливать важность и т.д. Кто-нибудь разобрался?

Ссылка на комментарий
  • 0
58 минут назад, Brovin Yaroslav сказал:

https://developer.android.com/training/notify-user/channels

Создание через  TNotificationCenter

Ну это я видел. Хотелось бы все-таки рабочий пример на FireMonkey (мы же на специализированном форуме FM)...

Пытался на основе официального примера по наитию так:

 Var Notification: TNotification;
  Channel :TChannel;
begin
  { verify if the service is actually supported }
  Notification := NotificationC.CreateNotification;
  try
    Channel := NotificationC.CreateChannel('MyCh','Описание');
    Channel.Importance :=  TImportance.Default;

    Notification.Name := 'MyNotification';
    Notification.AlertBody := 'Delphi for Mobile is here!';
    Notification.ChannelId := 'MyCh';
    Notification.FireDate := Now;


    { Send notification in Notification Center }
    NotificationC.PresentNotification(Notification);
    { also this method is equivalent if platform supports scheduling }
    //NotificationC.ScheduleNotification(Notification);
  finally
    Notification.DisposeOf;
  end;

В таком случае ничего не выводится. Подозреваю что что-то не хватает. Но что именно...

P.S. как вообще можно делать подобные вещи не оставляя каких-либо описаний или рабочих примеров в новом функционале?

Ссылка на комментарий
  • 0
Цитата

https://developer.android.com/training/notify-user/build-notification#java

Because you must create the notification channel before posting any notifications on Android 8.0 and higher, you should execute this code as soon as your app starts. It's safe to call this repeatedly because creating an existing notification channel performs no operation.

Попробуй создай channel глобально и на создание формы .

Только устанавливаю 10.3

Ссылка на комментарий
  • 0
1 час назад, MrAnderson сказал:

Как прошел переход?

Пока крайне плохо. Из замеченного - перестал работать Application.ProccesMessages. TMediaPlayer глючит не по детски (рабочий проект под 10.1  стал полностью неработоспособный в 10.3, хотя и запускается). TFgProgressDialog стал нестабильно работать. Перестал появляться сам диалог (FgProgressDialog.show не показывает окно, хотя код в потоке отрабатывается. Выводится только результат. Я думаю это как-то связано с проблемой Application.ProccesMessages ), хотя на другой форме этого же проект все сделано 1 в 1 и там открывается. В общем что-то пока мне не очень нравится 10.3...

Но полагаю это обсуждение не для этой ветки.

Ссылка на комментарий
  • 0
  • Администраторы
5 часов назад, Yarpda сказал:

Ну это я видел. Хотелось бы все-таки рабочий пример на FireMonkey (мы же на специализированном форуме FM)...

Пытался на основе официального примера по наитию так:


 Var Notification: TNotification;
  Channel :TChannel;
begin
  { verify if the service is actually supported }
  Notification := NotificationC.CreateNotification;
  try
    Channel := NotificationC.CreateChannel('MyCh','Описание');
    Channel.Importance :=  TImportance.Default;

    Notification.Name := 'MyNotification';
    Notification.AlertBody := 'Delphi for Mobile is here!';
    Notification.ChannelId := 'MyCh';
    Notification.FireDate := Now;


    { Send notification in Notification Center }
    NotificationC.PresentNotification(Notification);
    { also this method is equivalent if platform supports scheduling }
    //NotificationC.ScheduleNotification(Notification);
  finally
    Notification.DisposeOf;
  end;

В таком случае ничего не выводится. Подозреваю что что-то не хватает. Но что именно...

P.S. как вообще можно делать подобные вещи не оставляя каких-либо описаний или рабочих примеров в новом функционале?

Не хватает только одного, добавить созданный канал в систему.

NotificationC.CreateOrUpdateChannel(Channel);

 

Ссылка на комментарий
  • 0
20 часов назад, Brovin Yaroslav сказал:

Не хватает только одного, добавить созданный канал в систему.


NotificationC.CreateOrUpdateChannel(Channel);

 

Действительно. Уведомление стало появляться. В свойства отображается созданный канал, однако без звука, значка на экране блокировки и мигания светодиода.

Даже не смотря на следующие настройки:

При создании формы:

Channel := NotificationC.CreateChannel('MyCh12','Описание');
   Channel.Importance :=  TImportance.High;
   Channel.ShouldShowLights := true;
   Channel.LockscreenVisibility := TLockscreenVisibility.&Public;
   Channel.ShouldShowBadge := true;

   NotificationC.CreateOrUpdateChannel(Channel);

Вызов:

Notification := NotificationC.CreateNotification;
  try    Notification.Name := 'Name';
    Notification.AlertBody := 'Body';
    Notification.Title := 'Title';
      Notification.EnableSound := true;
    Notification.ChannelId := 'MyCh12';

   NotificationC.PresentNotification(Notification);
  finally
    Notification.DisposeOf;
  end;

Все что мне нужно появляется только есть зайти в настройку уведомления и включить все эти параметры вручную. После этого оно начинает вызываться как надо. Но настройка пользователем вручную это не вариант конечно.

Вопрос: почему не применяются настройки для канала уведомления?

 

Ссылка на комментарий
  • 0
17 часов назад, Yarpda сказал:

Но настройка пользователем вручную это не вариант конечно.

Вопрос: почему не применяются настройки для канала уведомления?

 

может потому что, пользователь не всегда хочет звук и мигание лампочек.... ?

если надо, пользователь включит!

Изменено пользователем #WAMACO
Ссылка на комментарий
  • 0
13 минут назад, #WAMACO сказал:

может потому что, пользователь не всегда хочет звук и мигание лампочек.... ?

если надо, пользователь включит!

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

Ссылка на комментарий
  • 0
3 минуты назад, Yarpda сказал:

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

у Вас будет доброе приложение! не навязчивое, так сказать.... ?

все по умолчанию трезвонят, а у вас с заботой о пользователе... что в этом плохого?

Изменено пользователем #WAMACO
Ссылка на комментарий
  • 0
2 минуты назад, #WAMACO сказал:

у Вас будет доброе приложение! не навязчивое, так сказать.... ?

все по умолчанию трезвонят, а у вас с заботой о пользователе... что в этом плохого?

Возьму Ваш совет на вооружение, но все же... ))

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...