Уведомление не отображается с помощью NotificationManager - PullRequest
0 голосов
/ 12 июля 2020

Я отправляю уведомления pu sh в своем приложении и хочу иметь возможность показывать их, даже если приложение уже запущено, поэтому я пытаюсь использовать функцию onMessageReceived (). Функция запускается всякий раз, когда я отправляю уведомление, и я вижу, что заголовок и тело уведомления правильные, так что пока никаких проблем. Затем я хочу, чтобы уведомление появилось на устройстве пользователя, но по какой-то причине я просто не могу заставить его работать. Я просмотрел множество сайтов и просмотрел вопросы о stackoverflow, и весь код в основном выглядит одинаково, поэтому меня немного сбивает с толку, почему он не работает для меня.

 @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");
    }

Он никогда не печатает последнюю строку («Все прошло нормально "), но также не выдает ошибок, поэтому кажется, что это работает, хотя это не так. В чем проблема и как ее исправить?

1 Ответ

0 голосов
/ 13 июля 2020

Кажется, было недавнее обновление, которое требует от вас запуска дополнительного кода, чтобы он работал с более новыми версиями 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());

...