Getting Multiple Notification instead of one in Android

巧了我就是萌 提交于 2019-12-12 04:03:30

问题


I am using Firebase notification in my android app. Generating notification using below code :

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();
}
}

The issue is multiple notification on status bar is generating instead of single, for the Same notification sent from the backend.

i have taken NOTIFICATION_ID as a static integer in my constant file. and i am incrementing it for differnt notification.

What might be the issue ?


回答1:


do not increase notification id when u receive same notification. you need to set some flag to check if the notification received is the same or different notification. when you send notification from FCM send some extra payload which has key-value pair which bears the notification id. set that notification ID instead of increasing from your code. Hope it helps



来源:https://stackoverflow.com/questions/45758061/getting-multiple-notification-instead-of-one-in-android

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