Firebase 消息传递,仅发送一次通知



如何仅发送包含 Firebase 消息的通知?当某个条件为真时,我正在发送通知。例如,如果x等于y。问题是这个条件可以在 x 时间内为真。这将导致应用程序在条件仍然为真时继续发送通知。因此,我想知道一种方法,例如如何检查消息是否唯一,并且每个通知仅发送一次。这是我的代码(带有示例条件(:

if(x == (2*y))
{
SendNotification("", x.ToString(), y.ToString());
}
string SendNotification(string DeviceToken, string title, string msg)
{
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 = "/topics/",
priority = "high",
content_available = true,
notification = new
{
body = msg,
title = title
},
};
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;
}

编辑:

我忘了提到可能有 2 个具有不同 x 和 y 值的唯一通知。因此,创建一个布尔值来检查通知是否发送,将不起作用。

似乎这个问题根本不是关于Xamarin的。

您从服务器应用程序发送通知,对吗?因此,如果您知道在x == y时只需要发送一次通知,那么例如设置一个布尔标志。或者创建一个state并将其保存在数据库中。

最新更新