Мы можем отправить уведомление на устройство, используя его токен и ключ сервера проекта firebase через fcm.googleapis.com/fcm/send. Поэтому я попытался заставить его работать в коде ниже. Он работает, но у меня проблема в том, что он не отправляет несколько уведомлений. Например, если я отправлю уведомление, а затем отправлю другое перед тем, как зарегистрировать это уведомление, старое уведомление будет отредактировано с новой информацией о последнем уведомлении, которое я только что отправил, вместо создания нового уведомления. Что я сделал не так, здесь?
Мой API:
[HttpPost]
[Route("api/test/Notification/{deviceID}")]
public IHttpActionResult SendNotify(int deviceID)
{
string deviceToken = "cAF8JeveS9av5pIdQtge0-:APA91bGvzkAno7ycM_fIzqwEjhIUTBy-la9u71_" +
"vYocHFhnnuGIO0PyfAMU2ph0cae6YuRGpYTAnbw9KtcKgN-aENmED3Bz4KLHnjrpU9HgfRHhBcTBP_" +
"gbd41-tcsMD4kC9Vl0dnHC2";
string now = DateTime.Now.ToString("H:mm");
string room = "AZ1";
string titleText = "Detect drowsiness!";
string bodyText = "There was a drowsiness in " + room + deviceID + " at " + now;
var data = new
{
to = deviceToken,
data = new
{
title = titleText,
body = bodyText,
message = bodyText
}
};
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(data);
byte[] byteArray = Encoding.UTF8.GetBytes(json);
FirebaseNotification firebaseNotification = new FirebaseNotification();
firebaseNotification.SendNotification(byteArray);
return Ok();
}
Мой код отправки уведомления:
public void SendNotification(byte[] byteArray)
{
try
{
string authorizationKey = "AAAA2d4Cw1E:APA91bEvIFr0lk6FOBIvwKnIn9qITwnfU7w15j2X0IBoREUCzmcwuLH-TmC93vlhhBlF1XwO170pc7I2HuEEYvHiqAeWr5f2pGiW3AuuNORcn1ikDdyjipHdBHVthG5qdeCoHLw6-v8_";
WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
tRequest.Method = "POST";
//tRequest.ContentType = "";
tRequest.ContentType = "application/json";
tRequest.Headers.Add($"Authorization: key={authorizationKey}");
tRequest.ContentLength = byteArray.Length;
Stream dataStream = tRequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse tResponse = tRequest.GetResponse();
dataStream = tResponse.GetResponseStream();
StreamReader tReader = new StreamReader(dataStream);
string tResponseFromServer = tReader.ReadToEnd();
tReader.Close();
dataStream.Close();
tResponse.Close();
}
catch (Exception)
{
throw;
}
}