Итак, я пытаюсь создать оповещение 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 секунд или около того?