通知出现在通知列表中,但不会在主屏幕上弹出

Notification comes in notification list but not pop ups on main screen

我分享了两张图片,你看看你就会明白我的问题了

在拳头图像通知中成功显示更好的我通知但是 我希望它首先出现在主屏幕上,如第二张图片所示,只是这个电报通知。

     public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
        //        r.play();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
            r.setLooping(false);
        }

        // vibration
        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        long[] pattern = {100, 300, 300, 300};
        v.vibrate(pattern, -1);

         int resourceImage = getResources().getIdentifier(remoteMessage.getNotification().getIcon(), "drawable", getPackageName());

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "CHANNEL_ID");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            builder.setSmallIcon(R.mipmap.betterme);
        } else {
            builder.setSmallIcon(R.mipmap.betterme);
        }
        Intent resultIntent = new Intent(this, SplashScreen.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        builder.setContentTitle(remoteMessage.getNotification().getTitle());
        builder.setContentText(remoteMessage.getNotification().getBody());
        builder.setContentIntent(pendingIntent);
        builder.setStyle(new NotificationCompat.BigTextStyle().bigText(remoteMessage.getNotification().getBody()));
        builder.setAutoCancel(true);
        builder.setOngoing(true);
        builder.setPriority(NotificationCompat.PRIORITY_MAX);
        builder.setSound(notification);

        mNotificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            String channelId = "Your_channel_id";
            NotificationChannel channel = new NotificationChannel(
                    channelId,
                    "Channel human readable title",
                    NotificationManager.IMPORTANCE_HIGH);
            AudioAttributes audioAttributes = new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_NOTIFICATION)
                    .build();
            channel.setSound(notification, audioAttributes);
            mNotificationManager.createNotificationChannel(channel);
            builder.setChannelId(channelId);
        }
        mNotificationManager.notify(100, builder.build());
    }
}

first image

second image

如果我没理解错的话,你想要一个提醒通知。

请注意,android 系统决定何时将通知设置为提醒通知并拥有最终决定权 - 而不是开发者。在这里你可以找到一些例子:https://developer.android.com/guide/topics/ui/notifiers/notifications#Heads-up

确保您的设置反映了这些。从您的示例来看,情况似乎是这样,但也许您已经更改了通知渠道设置(从应用程序设置),这会覆盖您的代码首选项(用户优先于应用程序)。

此外,请注意,如果您向上(而不是横向)滑动抬头通知,Android 会开始一段冷静时间,该应用会在几秒钟内不显示任何抬头通知(或者更多)。您也可以使用 Telegram 或任何其他应用程序进行尝试。冷静时间过后,它会再次出现,就像提醒通知一样。这是 Android 用来防止应用程序对用户造成干扰的一种方式。

通知中似乎没有问题。但是您的频道已经创建并带有正常通知,您将 NotificationChannel 更新为 IMPORTANCE_HIGH

Once the channel is created with priority it cannot be changed。所以您可以更改频道ID或卸载并重新安装并测试它。