You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用AmazonSNS .NET客户端发送不含default的自定义Payload至平台端点ARN

解决方案:直接发送FCM原生负载到平台端点

当你发送消息到单个FCM平台端点ARN时,不需要启用MessageStructure="json"的多平台消息模式(该模式仅适用于主题订阅多种平台的场景,强制要求default字段)。正确做法是直接将FCM原生负载字符串作为Message参数发送,无需外层JSON包装。

具体实现步骤

  • 构造FCM原生data负载字符串(和你在控制台中填入的GCM字段内容一致):
    "{ \"data\": { \"MyTitle\": \"Sample endpoints\", \"MyMessage\": \"Important\" } }"
    
  • 创建PublishRequest时,仅指定TargetArn(你的平台端点ARN)和Message(上述负载字符串),不要设置MessageStructure属性
  • 调用SNS客户端的Publish方法发送

完整代码示例(C#)

using Amazon.SimpleNotificationService;
using Amazon.SimpleNotificationService.Model;

var snsClient = new AmazonSimpleNotificationServiceClient();

// 构造FCM原生data负载
string fcmPayload = "{ \"data\": { \"MyTitle\": \"Sample endpoints\", \"MyMessage\": \"Important\" } }";

var publishRequest = new PublishRequest
{
    TargetArn = "你的FCM平台端点ARN",
    Message = fcmPayload
    // 注意:不要设置MessageStructure属性
};

var response = await snsClient.PublishAsync(publishRequest);

为什么控制台能正常工作?

你在控制台选择「按传输协议自定义负载」发送到平台端点时,SNS后台会自动识别目标端点的平台类型(此处为FCM/GCM),直接将你输入的负载作为原生消息发送,没有启用多平台消息结构,因此不需要default字段。而之前设置MessageStructure="json"时,SNS会强制按照多平台消息格式处理,自动添加default包裹,导致不符合预期。

内容的提问来源于stack exchange,提问作者Vincent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:45:40