Мне нужна помощь с уведомлениями на Android. Мой сервер отправил запрос (на сервер firebase) с уникальным идентификатором для нового уведомления. Если мое устройство получит его, новое уведомление будет создано и отправлено уведомление. Если я отправлю следующий запрос с другим уникальным идентификатором, будет создано новое уведомление. В строке состояния есть два уведомления. Каждое уведомление имеет некоторые данные в Intent, и я хочу показать их в Activity. Но после нажатия на первую или вторую или последнюю (если устройство получило 2 или более уведомлений), это вызывает запуск активности (с намерением) из последнего полученного (вершина стека уведомлений). Я думаю, что эта проблема в каком-то флаге по намерению или PendingIntent.
@Override
public void onMessageReceived(RemoteMessage respose ) {
JSONObject response_intent=null;
try {
response_intent= new JSONObject( respose.getData().get("intent"));
} catch (JSONException e) {
e.printStackTrace();
}
int unique_id=Integer.valueOf(respose.getData().get("id_original"));
/*After notification click to open Activity ... */
Intent intent = new Intent("eu.energochemica.cat_notifications.DETAIL_SCREEN");
/*... with data from firebase via Intent */
intent.putExtra("fromNotification", true);
intent.putExtra("intentFromNotification", respose.getData().get("intent"));
intent.putExtra("id_original",unique_id);
intent.putExtra("header",respose.getData().get("header"));
intent.putExtra("text",respose.getData().get("text"));
/*HERE? What FLAG to use?* Intent.FLAG_ACTIVITY_NEW_TASK */
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
/*OR HERE? What FLAG to use?*/
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, Config.NOT_CHANNEL_ID)
.setSmallIcon(this.getResources().getIdentifier("cat_logo_white", "drawable", this.getPackageName()))
.setContentTitle(respose.getData().get("header"))
.setContentText(respose.getData().get("text"))
.setAutoCancel(false)
.setChannelId(Config.NOT_CHANNEL_ID)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE+ "://" +this.getPackageName()+"/"+R.raw.notif))
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(unique_id, notificationBuilder.build());
}
Мне нужно (если я получил четыре уведомления в строке: 1, 2, 3, 4, где 4последний (самый новый)) , чтобы открыть действие с правильным намерением. (нажмите на уведомление 1 (самое старое) откроет Активность с намерением из этого уведомления 1 и не откроет Намерение из уведомления 4) .
Я не знаю, как ичто я должен делать с кодом, FLAG. Кто-нибудь может мне помочь?