【问题标题】:Firebase messaging, send notification only onceFirebase 消息传递,只发送一次通知
【发布时间】:2019-10-06 18:28:08
【问题描述】:

如何仅使用 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 值紧挨着的唯一通知。因此,创建一个布尔值来检查是否发送了通知是行不通的。

【问题讨论】:

  • 我在某个条件为真时发送通知。,这是什么意思?什么是特定条件?
  • @CherryBu-MSFT 抱歉,我忘记将示例放入代码中。这只是if(x == y) 的一个示例。我更新了代码。
  • 有人有想法吗?
  • 如果你想查看通知是否发送,你可以去查看是否有响应,根据你的描述,我猜你有两个条件,不同的条件发送不同的通知?

标签: c# firebase xamarin


【解决方案1】:

似乎这个问题根本与 Xamarin 无关。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2016-12-13
    • 2019-12-30
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多