Я пытаюсь отправить push-уведомления нескольким устройствам одним выстрелом. Для этого, я делаю следующее:Amazon SNS - Отправка push-уведомлений нескольким устройствам
- элемент списка
- создать тему
- подписываться все устройства, я хочу эту тему
- опубликовать сообщение в этой теме
Я пытаюсь отправить пользовательский JSON в свои приложения. Содержание:
{"APNS_SANDBOX":"{\"aps\":\"{\\\"u\\\":\\\"1\\\"}\"}"}
Хотя, я получаю ошибку InvalidParameter, отправляющую JSON. Деталь ошибка
«Структура сообщений - запись по умолчанию нет в JSON теле сообщения»
странное дело в том, что тот же JSON послал к одному устройству (издательским к endpointarn) работает ,
Вот мой код:
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();
Спасибо :) (извините за огромные задержки) – user3609216