Заголовок и текст уведомления отображаются только в том случае, если приложение не открыто на oreo? - PullRequest
0 голосов
/ 04 мая 2019

Я пробовал Android Push Notification с использованием FCM на Oreo, когда я не запускаю приложение, уведомление появляется на панели уведомлений с указанием заголовка и тела, но когда я пытался отправить уведомление, когда приложение открыто Я получил уведомление с пустым названием и телом. Затем я попытался оставить приложение на заднем плане, не закрывая приложение, снова появилось уведомление с заголовком и телом.

Вот мой код службы FirebaseMessagingService:

NotificationManager notificationManager;
private static final String ADMIN_CHANNEL_ID ="default";
Uri defaultSoundUri;
int notificationId;

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override public void onMessageReceived(RemoteMessage remoteMessage) {

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

    //Setting up Notification channels for android O and above
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        setupChannels();
    }
    notificationId = new Random().nextInt(60000);

    defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, ADMIN_CHANNEL_ID)
            .setChannelId(ADMIN_CHANNEL_ID) //COBA HAPUS KALO NOUGAT FORCE CLOSE (OPTIONAL)
            .setSmallIcon(R.drawable.ic_launcher_background)
            .setPriority(Notification.PRIORITY_HIGH) //COBA HAPUS KALO NOUGAT FORCE CLOSE (OPTIONAL)
            .setContentTitle(remoteMessage.getData().get("title"))
            .setContentText(remoteMessage.getData().get("message"))
            .setAutoCancel(true)
            .setVibrate(new long[]{0, 100, 100, 100, 100, 100})
            .setSound(defaultSoundUri);

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

    notificationManager.notify(notificationId, notificationBuilder.build());

}

@RequiresApi(api = Build.VERSION_CODES.O)
private void setupChannels(){
    CharSequence adminChannelName = getString(R.string.app_name);
    String adminChannelDescription = getString(R.string.notifications_admin_channel_description);

    AudioAttributes attributes = new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_NOTIFICATION)
            .build();
    NotificationChannel adminChannel;
    adminChannel = new NotificationChannel(ADMIN_CHANNEL_ID, adminChannelName, NotificationManager.IMPORTANCE_HIGH);
    adminChannel.setDescription(adminChannelDescription);
    adminChannel.enableLights(true);
    adminChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
    adminChannel.setSound(defaultSoundUri, attributes);
    adminChannel.enableVibration(true);
    if (notificationManager != null) {
        notificationManager.createNotificationChannel(adminChannel);
    }
}

что я пропустил в своем коде?

...