Notification does not show firebase Android 8

我只是一个虾纸丫 提交于 2021-02-08 08:32:08

问题


I have an app that is supposed to show a push notification but it doesn't this line new NotificationCompat.Builder(this); is canceled out in the code. I'm new to this, how can this work here is the code in FirebaseMessagingService.java class

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

    sendNotification(remoteMessage.getNotification().getBody());
}

private void sendNotification(String MessageBody){
 Intent intent= new Intent(this,MainActivity.class);
 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT);
    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder=new NotificationCompat.Builder(this);
   notificationBuilder.setSmallIcon(R.drawable.ic_launcher_background);
    notificationBuilder.setContentTitle("Hope");
     notificationBuilder.setContentText(MessageBody);
   notificationBuilder.setAutoCancel(true);
   notificationBuilder.setSound(defaultSoundUri);
  notificationBuilder.setContentIntent(pendingIntent);
  NotificationManager notificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
  notificationManager.notify(0,notificationBuilder.build());

}

}

回答1:


It seems duplicate question of here.

Since Android O (It means your targetSdk is 26 or above), notification will not be showing without notification channel.

This is my working code :)

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

Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

// The id of the channel.
final String CHANNEL_ID = "default";
// The user-visible name of the channel.
final String CHANNEL_NAME = "Default";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
    NotificationChannel defaultChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
    notificationManager.createNotificationChannel(defaultChannel);
}

intent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(c, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

final NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(c, CHANNEL_ID)
        .setLargeIcon(your_custom_bitmap)
        .setSmallIcon(R.drawable.ic_notification)
        .setColor(ContextCompat.getColor(c, R.color.notification))
        .setContentTitle(getString(R.string.app_name))
        .setContentText(message)
        .setWhen(System.currentTimeMillis())
        .setSound(defaultSoundUri)
        .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
        .setLights(ContextCompat.getColor(c, R.color.colorAccentLight), 5000, 5000)
        .setAutoCancel(true)
        .setPriority(NotificationCompat.PRIORITY_MAX)
        .setContentIntent(pendingIntent);

notificationManager.notify("myapp", 0, notificationBuilder.build());



回答2:


try to use:

NotificationChannel mChannel = new NotificationChannel("", "", 1);
notificationManager.createNotificationChannel(mChannel);



回答3:


If you push notification from Firebase console, you just get notification display if the app is on background or not running. You can read more at HERE. If you want to receive notification data on onMessageReceived() method, you have to send the notification from a backend



来源:https://stackoverflow.com/questions/50463166/notification-does-not-show-firebase-android-8

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!