通过 AWS SNS 将 JSON 数据负载发送到 FCM



我正在尝试将具有data有效负载的 json 消息从 AWS SNS 发送到 FCM。根据另一个线程,我从SNS发送的JSON消息应采用以下格式:

{
"GCM": "{ "data": { "message": "test message" } }"
}

在我的 Android 应用程序中,我扩展了FirebaseMessagingService并覆盖了 OnMessageReceived 方法来处理传入的推送通知。

这是我的代码的样子:

    public override void OnMessageReceived(RemoteMessage message)
    {
        string messageBody = message.GetNotification().Body; //Fails here
        int custom1;
        string custom2 = string.Empty;
        try { custom1 = Convert.ToInt32(message.Data["custom1"]); }
        catch (KeyNotFoundException e) { custom1 = -1; }
        try { custom2 = message.Data["custom2"].ToString(); }
        catch (KeyNotFoundException e) { custom2 = "err"; }
        PublishNotification(messageBody, custom1, custom2);
    }

当我使用上面编写的 JSON 消息通过 SNS 发送自定义通知时,该消息已成功接收。但是,当我尝试处理 JSON 时,一旦到达 message.GetNotification().Body 就会失败。我收到的错误告诉我正文未包含在 JSON 消息中。

我的问题是,从 AWS SNS 向 FCM 发送data有效负载时,正确的 JSON 消息是什么。

我也尝试了以下替代方案,但无济于事:

{
"GCM": "{ "data": { "text": "test message" } }"
}
{
"GCM": "{ "data": { "body": "test message" } }"
}

提前感谢您的任何帮助。

基于此相关 SO 线程,SNS 生成的消息将采用以下形式:

{
"GCM": "{ "data": { "message": "test message" } }"
}

由于如果没有实现接收它们的服务data有效负载将被忽略,因此我们应该发送一个notification有效负载。为此,只需将 JSON 消息更改为:

{
"GCM": "{ "notification": { "text": "test message" } }"
}

有关更多信息,您可以从给定的链接中查看答案。

我将string messageBody = message.GetNotification().Body;更改为messageBody = message.Data["message"].ToString();并成功检索了消息正文的内容。

相关内容

  • 没有找到相关文章

最新更新