• 0
MrAnderson

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

Вопросы

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

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

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

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

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

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

Спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 ответ на этот вопрос

  • 0

Причем если в демо выставить  AndroidManifest.template.xml  <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="26" /> то тоже перестают приходить уведомления.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

А разрешения все нужные есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Да

И с прочитанного я понял что с 26 API изменился принцип вывода уведомлений.

Изменено пользователем MrAnderson

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 23.11.2018 в 13:57, Yarpda сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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 сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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