Ich benutze Firebase-Benachrichtigung in meiner Android-App. generiert Benachrichtigung unter Code:Getting Multiple Notification statt einer in Android
public class FirebaseNotificationService extends FirebaseMessagingService {
private static final String TAG = FirebaseNotificationService.class.getSimpleName();
private String strTitle = "My Notification";
private String strMessage = "No Description";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (Prefrences.getBooleanValue(getApplicationContext(), IS_LOGIN) && Prefrences.getBooleanValue(getApplicationContext(), Prefrences.IS_NOTIFICATION)) {
if (remoteMessage.getData().get("title") != null) {
strTitle = remoteMessage.getData().get("title");
}
if (remoteMessage.getData().get("message") != null) {
strMessage = remoteMessage.getData().get("message");
}
sendNotification(strTitle, strMessage);
}
}
private void sendNotification(String strTitle, String messageBody) {
try {
if (!getTopActivity().equals("com.app.activity.NotificationActivity")) {
Intent intent = new Intent(this, DashboardActivity.class);
intent.putExtra("notification", "yes");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.app_icon)
.setContentTitle(strTitle)
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(++NOTIFICATION_ID /* ID of notification */, notificationBuilder.build());
} else {
Intent intent = new Intent();
intent.setAction("load_service");
sendBroadcast(intent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public String getTopActivity() {
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
return taskInfo.get(0).topActivity.getClassName();
}
}
Das Problem ist, mehrere Benachrichtigung in der Statusleiste wird anstelle von einzelnen, für die gleiche Mitteilung aus dem Backend gesendet zu erzeugen.
Ich habe NOTIFICATION_ID als eine statische ganze Zahl in meiner konstanten Datei genommen. und ich erhöhe es für unterschiedliche Benachrichtigung.
Was könnte das Problem sein?
Ich nehme an, wenn die gleiche Benachrichtigung in mehreren Zeit erhalten dann nur eine zeigen. aber verschiedene Arten von Benachrichtigungen erhalten dann mehrere anzeigen. ist richtig? – Raja