Android FCM Heads-Up уведомления никогда не прячутся в системный трей - PullRequest
0 голосов
/ 07 марта 2019

Итак, я пытаюсь создать оповещение FCM на Android (вызов через бэкэнд).Код для отображения уведомления следующий (вместо этого я отправляю данные по уведомлению, поэтому он всегда вызывает onMessageReceived)

 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),
            new Random().nextInt(), intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
        NotificationChannel channelId = new NotificationChannel("channel01", "name",
            NotificationManager.IMPORTANCE_HIGH);
        channelId.setDescription("test push notif");
        // Register channel with system
        notificationManager.createNotificationChannel(channelId);
    }

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder =
            new NotificationCompat.Builder(this, "channel01")
                    .setSmallIcon(R.mipmap.ic_collection)
                    .setContentTitle(data.get("title"))
                    .setContentText(data.get("message"))
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setOnlyAlertOnce(true)
                    .setFullScreenIntent(pendingIntent, true)
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setPriority(NotificationCompat.PRIORITY_HIGH);


    notificationManager.notify(99 /* ID of notification */, notificationBuilder.build());

Вот данные, которые я отправляю

"to":"token-id",
"content_available": true,
"priority": "high",
"data": {
    "title":"title",
  "message": "message body",
  "notificationKey":"1",
  "priority": "high",
  "sound": "default"
}

МоиТестирующим устройством является Android Pie, поэтому мне нужно создать канал для использования Heads-Up.Тем не менее, Heads Up никогда не скрывается, он всегда отображается до тех пор, пока не будет нажата кнопка или не откроется системный трей.Я хочу, чтобы заголовок скрывался в системном трее за 5 секунд, как и любое другое уведомление.Я уже пробовал эти

.setOngoing(true)
.setCategory(Notification.CATEGORY_CALL)

, но это не имеет никакого значения, уведомление Heads Up все еще появляется бесконечно, если на него не нажимают.Как скрыть уведомление о HeadSup через 5 секунд или около того?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...