C# Firebase消息,仅发送一次通知

C# Firebase消息,仅发送一次通知,c#,firebase,xamarin,C#,Firebase,Xamarin,如何仅发送带有Firebase消息的通知?当某个条件为真时,我将发送通知。例如,如果x等于y。问题是,这种情况可能在x时间内为真。这将导致应用程序在条件仍然为真时继续发送通知。因此,我想知道一种方法,例如,如何检查消息是否唯一,并只发送一次通知。这是我的代码(带有示例条件): 编辑: 我忘了提到可能有两个唯一的通知,每个通知后面都有不同的x和y值。因此,创建一个布尔值来检查是否发送了通知将不起作用。似乎这个问题根本不是关于Xamarin的 您从服务器应用程序发送通知,对吗?因此,如果您知道当x=

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

编辑:


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

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


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

当某个条件为真时,我将发送一个通知。这意味着什么?什么是确定条件?@CherryBu MSFT抱歉,我忘了在代码中添加示例。这只是
if(x==y)
的一个例子。我更新了代码。有人知道吗?如果你想检查是否发送了通知,你可以去检查是否有响应,根据你的描述,我猜你有两个条件,不同的条件发送不同的通知?
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;
}