使用 NotificationManager 不显示通知

Notification not showing using NotificationManager

我正在我的应用程序中发送推送通知,并且希望即使该应用程序已经 运行 也能显示它们,因此我正在尝试使用 onMessageReceived() 函数。每当我发送通知时该函数都会运行,我可以看到通知的标题和 body 是正确的,所以到目前为止没有问题。然后我希望通知在用户设备上弹出,但由于某种原因我无法让它工作。我看过很多网站和 Whosebug 问题,所有代码基本上看起来都一样,所以有点困惑为什么它对我不起作用。

 @Override
    public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        String messageTitle = remoteMessage.getNotification().getTitle();
        String messageBody = remoteMessage.getNotification().getBody();
        System.out.println("TITLE_IS: " + messageTitle);
        System.out.println("MESSAGE_BODY: "+ messageBody);

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, getString(R.string.default_notification_channel_id))
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(messageTitle)
                .setContentText(messageBody);

        //Sets ID for the notification
        int mNotificationId = (int) System.currentTimeMillis();
        

        NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        mNotifyMgr.notify(mNotificationId, mBuilder.build());

        System.out.println("Everything went fine");
    }

它从不打印最后一行(“一切正常”),但也没有给出错误,所以它似乎可以工作,即使它没有。有什么问题,我该如何解决?

最近似乎有一个更新需要您 运行 一些额外的代码才能在较新的 android 版本上运行。所以代码应该类似于:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, getString(R.string.default_notification_channel_id))
                    .setSmallIcon(R.drawable.ic_challenge)
                    .setContentTitle(messageTitle)
                    .setContentText(messageBody)
                    .setPriority(Notification.PRIORITY_MAX)
                    .setContentIntent(pendingIntent);

            //to show notification do this

            //Sets ID for the notification

            int mNotificationId = (int) System.currentTimeMillis();
            NotificationManager mNotifyMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
            {
                String channelId = "Tic-Tac-Toe";
                NotificationChannel channel = new NotificationChannel(
                        channelId,
                        "Tic-Tac-Toe",
                        NotificationManager.IMPORTANCE_HIGH);
                mNotifyMgr.createNotificationChannel(channel);
                mBuilder.setChannelId(channelId);
            }

            mNotifyMgr.notify(mNotificationId, mBuilder.build());