Heads push-уведомления не выполняют функцию всплывающих окон - PullRequest
0 голосов
/ 09 ноября 2018

Я новичок в Android и пытаюсь показать push-уведомление о действии Heads up, как это делает WhatsApp.

Это моя конфигурация для моего уведомления:

NotificationCompat.Builder notificationBuilder =
                new NotificationCompat.Builder(this, ADMIN_CHANNEL)
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_foreground))
                        .setSmallIcon(R.drawable.m_icon)
                        .setContentTitle(remoteMessage.getNotification().getTitle())
                        .setTicker(remoteMessage.getNotification().getBody())
                        .setColor(ContextCompat.getColor(getApplicationContext(), R.color.mblue))
                        .setAutoCancel(true)
                        .setSound(defaultSoundUri)
                        .setStyle(new NotificationCompat.BigTextStyle()
                                .bigText(remoteMessage.getNotification().getBody()))
                        .setPriority(NotificationCompat.PRIORITY_HIGH)
                        .setContentIntent(likePendingIntent);

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0,notificationBuilder.build());

Я прочитал в каком-то посте, что ключом к этому является установка высокого приоритета для уведомления, но он все еще не работает для меня.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Для Android Pie (9) на эмуляторе я настраиваю свой канал с помощью «IMPORTANCE_HIGH», а также устанавливаю приоритет моего сборщика на «PRIORITY_HIGH».

Но я так и не смог получить хедз-ап уведомлений!

Наконец, на эмуляторе Android 9 мне пришлось:

  1. проведите вниз по панели уведомлений
  2. нажмите «Управление уведомлениями»
  3. выберите мое приложение
  4. выберите мой канал
  5. выберите "Поведение"
  6. включить «Звук и звук на экране».

Теперь это работает.

0 голосов
/ 09 ноября 2018

Проблема в том, что мы должны добавлять новую конфигурацию канала всякий раз, когда операционной системой является Oroe. Поэтому мне пришлось проверить, является ли ОС Oreo, а затем назначить канал для моего модуля уведомлений:

NotificationManager notificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
    setupChannels();
}

@RequiresApi(api = Build.VERSION_CODES.O)
private void setupChannels(){
    CharSequence adminChannelName ="Global channel";
    String adminChannelDescription = "Notifications sent from the app admin";
    NotificationChannel adminChannel;
    adminChannel = new NotificationChannel(ADMIN_CHANNEL_ID, adminChannelName, NotificationManager.IMPORTANCE_HIGH);
    adminChannel.setDescription(adminChannelDescription);
    adminChannel.enableLights(true);
    adminChannel.setImportance(NotificationManager.IMPORTANCE_HIGH);
    adminChannel.setLightColor(Color.RED);
    adminChannel.enableVibration(true);
    if (notificationManager != null) {
        notificationManager.createNotificationChannel(adminChannel);
    }

}
...