onMessageRectained () вызывается, делает свой код, но не показывает уведомление - PullRequest
0 голосов
/ 14 марта 2019

Я следовал этому руководству и использую FCM для отправки push-уведомлений, но по какой-то причине код, похоже, не работает. В onMessageReceve () я создаю уведомление, заставляю телефон вибрировать и показывать уведомление, и по какой-то причине телефон вибрирует, но уведомление не отображается. Это код:

Intent intent=new Intent(this, WelcomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent=PendingIntent.getActivity(this
                    ,0
                    ,intent
                    ,PendingIntent.FLAG_ONE_SHOT);
            NotificationCompat.Builder notificationBuilder=new NotificationCompat.Builder(this);
            notificationBuilder.setContentTitle(getString(R.string.app_name));
            notificationBuilder.setContentText(message);
            Uri soundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            notificationBuilder.setSound(soundUri);
            notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
            notificationBuilder.setLargeIcon(BitmapFactory.decodeResource(this.getResources(),R.mipmap.ic_launcher));
            notificationBuilder.setAutoCancel(true);
            Vibrator v=(Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
            v.vibrate(1000);
            notificationBuilder.setContentIntent(pendingIntent);
            NotificationManager notificationManager=(NotificationManager)
                    getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(0,notificationBuilder.build());

Если бы кто-нибудь мог сказать мне, что случилось, это было бы здорово .. Спасибо :) 1004 *

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Для Android 8 и выше используйте канал уведомлений, как показано ниже

Intent intent=new Intent(this, WelcomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent=PendingIntent.getActivity(this
                    ,0
                    ,intent
                    ,PendingIntent.FLAG_ONE_SHOT);
            NotificationCompat.Builder notificationBuilder=new NotificationCompat.Builder(this);
            notificationBuilder.setContentTitle(getString(R.string.app_name));
            notificationBuilder.setContentText(message);
            Uri soundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            notificationBuilder.setSound(soundUri);
            notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
            notificationBuilder.setLargeIcon(BitmapFactory.decodeResource(this.getResources(),R.mipmap.ic_launcher));
            notificationBuilder.setAutoCancel(true);
            Vibrator v=(Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
            v.vibrate(1000);
            notificationBuilder.setContentIntent(pendingIntent);

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        // Since android Oreo notification channel is needed.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
           /* NotificationChannel channel = new NotificationChannel(channelId,
                    "Membership Alerts",
                    NotificationManager.IMPORTANCE_DEFAULT);
            notificationManager.createNotificationChannel(channel);*/

            CharSequence name = getString(R.string.notification_channel_name);
            String description = getString(R.string.notification_channel_description);
            int importance = NotificationManager.IMPORTANCE_DEFAULT;
            NotificationChannel channel = new NotificationChannel(channelId, name, importance);
            channel.setDescription(description);
            notificationManager.createNotificationChannel(channel);
        }

        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
0 голосов
/ 14 марта 2019

Исходя из вашего кода и того факта, что уведомление не появляется, я предполагаю, что вы тестируете устройство с версией Android выше 8.0.

Для Android 8.0 (Oreo) и выше необходимо использовать каналы уведомлений, чтобы отобразить уведомление. Обратитесь к этой ссылке для более подробной информации.

...