Не получается уведомление в Android Oreo, когда приложение не запущено - PullRequest
0 голосов
/ 24 сентября 2018

Я занимаюсь разработкой приложения, в котором не получаю уведомления, когда приложение не работает в Android Oreo.При получении push-уведомления вызывается метод onMessageReceived, но уведомление не отображается в панели уведомлений.Принимая во внимание, что если приложение работает (передний план или фон), я получаю уведомление в панели уведомлений.открытый класс MyFirebaseMessagingService extends FirebaseMessagingService {

private static final String TAG = "MyFirebaseMsgService";

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    RemoteMessage.Notification notification = remoteMessage.getNotification();
    Intent intent = new Intent(this, ApplyAndInitiateMainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

    String channelId = "100";
    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder =
            new NotificationCompat.Builder(this,channelId)
                    .setLargeIcon(bitmap)
                    .setSmallIcon(R.image_new)
                    .setContentTitle(title)
                    .setContentText(message)
                    .setAutoCancel(true)
                    .setWhen(remoteMessage.getSentTime())
                    .setSound(defaultSoundUri)
                    .setContentIntent(pendingIntent)
                    .setPriority(Notification.PRIORITY_HIGH)
                    .addAction(0,"Apply LEAVE",pendingIntent)
                    .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(bitmap).setSummaryText(message).bigLargeIcon(null));

    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, "Channel human readable title", NotificationManager.IMPORTANCE_DEFAULT);
        notificationManager.createNotificationChannel(channel);
    }
    notificationManager.notify(0, notificationBuilder.build());
    }

}

1 Ответ

0 голосов
/ 24 сентября 2018

Создайте свой канал уведомлений перед созданием уведомления:

String channelId = "100";
// Since android Oreo notification channel is needed.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel channel = new NotificationChannel(channelId, "Channel human readable title", NotificationManager.IMPORTANCE_DEFAULT);
    notificationManager.createNotificationChannel(channel);
}
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId)
                .setLargeIcon(bitmap)
                .setSmallIcon(R.image_new)
                .setContentTitle(title)
                .setContentText(message)
                .setAutoCancel(true)
                .setWhen(remoteMessage.getSentTime())
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent)
                .setPriority(Notification.PRIORITY_HIGH)
                .addAction(0,"Apply LEAVE",pendingIntent)
                .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(bitmap).setSummaryText(message).bigLargeIcon(null));
...