Мой код работает отлично, но проблема в перенаправлении, например, когда на моем телефоне появляется одно уведомление, он получает идентификатор еды 101, а через несколько секунд или минут, когда я получаю второе уведомление, я получаю код еды 102. Когда я нажимаюв первом уведомлении отображается информация с идентификатором еды 102 вместо идентификатора еды 101 Пожалуйста, помогите мне, где я делаю не так
Вот мой код C #
public String SendNotification(string DeviceToken, string title, string msg, int id, string action)
{
var result = "-1";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Headers.Add(string.Format("Authorization: key={0}", serverKey));
httpWebRequest.Headers.Add(string.Format("Sender: id={0}", senderId));
httpWebRequest.Method = "POST";
var payload = new
{
to = DeviceToken,
priority = "high",
content_available = true,
data = new
{
body = msg,
title = title,
click_action = action
},
};
var serializer = new JavaScriptSerializer();
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = serializer.Serialize(payload);
streamWriter.Write(json);
streamWriter.Flush();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
return result;
}
Вот мой экземпляр FirebaseКласс
public class MyFirebaseInstanceService extends FirebaseMessagingService {
PendingIntent pendingIntent;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
String action_click = remoteMessage.getData().get("click_action");
String userid = remoteMessage.getData().get("key");
String body =remoteMessage.getData().get("body");
String foodid = remoteMessage.getData().get("keyfood");
Intent intent = new Intent(this,MainActivity.class);
intent.putExtra("click_action",action_click);
intent.putExtra("key",userid);
intent.putExtra("body",body);
intent.putExtra("keyfood",foodid);
intent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TOP);
pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
ShowNotification(remoteMessage.getData().get("title"), remoteMessage.getData().get("body"));
}
private void ShowNotification(String title, String body) {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String NOTIFICATION_CHANNEL_ID = "com.example.acer.chefodine.test";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID
, "Notification", NotificationManager.IMPORTANCE_DEFAULT);
notificationChannel.setDescription("ChefODine");
notificationChannel.enableLights(true);
notificationChannel.setLightColor(Color.BLUE);
notificationChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
notificationManager.createNotificationChannel(notificationChannel);
}
NotificationCompat.Builder notifiBuilder = new NotificationCompat.Builder
(this, NOTIFICATION_CHANNEL_ID);
notifiBuilder.setAutoCancel(true).
setDefaults(Notification.DEFAULT_ALL).setContentIntent(pendingIntent)
.setWhen(System.currentTimeMillis()).setSmallIcon(R.drawable.logo)
.setContentTitle(title).setContentText(body).setContentInfo("info");
notificationManager.notify(new Random().nextInt(), notifiBuilder.build());
}
Вот мой основной вид деятельности
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
notificationWork();
}
private void notificationWork(){
String action = getIntent().getStringExtra("click_action");
String key = getIntent().getStringExtra("key");
String body = getIntent().getStringExtra("body");
String foodid = getIntent().getStringExtra("keyfood");
if(action !=null && !action.equals("")){
NotificationIntent noti = new NotificationIntent();
noti.redirectIntent(this,action,key,foodid,body,this);
}
}
Вот мой класс уведомлений
private MainActivity mainactivity;
public void redirectIntent(MainActivity mainactivity, String action, final String key, final String foodid, String body, MainActivity context) {
this.mainactivity=mainactivity;
switch (action){
case "notification":
context.replaceFragment(new Notifications());
break;
case "popup":
break;
case "foodaction":
final int id = Integer.parseInt(foodid);
GetFoodById(id);
break;
case "order":
context.replaceFragment(new ChefOrders());
break;
} }