【发布时间】:2019-08-06 22:50:33
【问题描述】:
我正在尝试一次将推送通知发送到多个设备。为此,我正在执行以下操作:
- 列表项
- 创建主题
- 为我想要的所有设备订阅该主题
- 向主题发布消息
我正在尝试向我的应用发送自定义 JSON。内容是:
{"APNS_SANDBOX":"{\"aps\":\"{\\\"u\\\":\\\"1\\\"}\"}"}
不过,我在发送 JSON 时收到 InvalidParameter 错误。错误详情是
“消息结构 - JSON 消息正文中没有默认条目”
奇怪的是,发送到单个设备(发布到端点)的相同 JSON 正在工作。
这是我的代码:
AmazonSimpleNotificationServiceClient client = new AmazonSimpleNotificationServiceClient(ssAmazonToken.ssSTAmazonToken.ssAccessKey, ssAmazonToken.ssSTAmazonToken.ssSecretKey, solveRegionEndpoint(ssRegionEndpoint));
//create topic
CreateTopicRequest topicRequest = new CreateTopicRequest();
string topicName = Guid.NewGuid().ToString();
topicRequest.Name = topicName;
log(ssIsDebugMode, "Name (" + topicRequest.Name + ")", module);
CreateTopicResponse topicResponse = client.CreateTopic(topicRequest);
ssTopicArn = topicResponse.TopicArn;
//subscribe endpoints to the topic
foreach(RCAmazonSNSDeviceRecord endpoint in ssDevices)
{
SubscribeRequest subscribeRequest = new SubscribeRequest();
subscribeRequest.TopicArn = topicResponse.TopicArn;
subscribeRequest.Endpoint = endpoint.ssSTAmazonSNSDevice.ssEndpointArn;
subscribeRequest.Protocol = "application";
log(ssIsDebugMode, "TopicArn (" + subscribeRequest.TopicArn + ") "
+ "Endpoint (" + subscribeRequest.Endpoint + ") "
+ "Protocol (" + subscribeRequest.Protocol + ") ", module);
SubscribeResponse subscribeResponse = client.Subscribe(subscribeRequest);
/*ConfirmSubscriptionRequest confirmSubsRequest = new ConfirmSubscriptionRequest();
confirmSubsRequest.AuthenticateOnUnsubscribe = true;
confirmSubsRequest.TopicArn = topicResponse.TopicArn;*/
}
//publish message to the topic
PublishRequest publishRequest = new PublishRequest();
publishRequest.TopicArn = topicResponse.TopicArn;
publishRequest.MessageStructure = ssIsJSON ? "json" : "";
publishRequest.Message = ssMessageContent;
log(ssIsDebugMode, "TargetArn (" + publishRequest.TargetArn + ") "
+ "MessageStructure (" + publishRequest.MessageStructure + ") "
+ "Message (" + publishRequest.Message + ") ", module);
PublishResponse response = client.Publish(publishRequest);
ssAmazonResponse.ssSTAmazonResponse.ssResponseCode = response.HttpStatusCode.ToString();
ssMessageId = response.MessageId;
ssContentLength = response.ContentLength.ToString();
【问题讨论】:
标签: amazon-sns