Опубликованное сообщение AWS SNS не отправляется на устройство

Я экспериментирую с AWS SNS как альтернативой запуску собственного сервиса отправки push-уведомлений в приложения для iOS и Android. Я начинаю с GCM, поэтому я создал приложение GCM в SNS, а затем добавил конечную точку.

Когда я публикую сообщение с консоли AWS, оно нормально проходит на устройство, но когда я публикую через AWS PHP SDK, он возвращает messageId (поэтому SNS получил сообщение), но не отправляет на устройство.

Вот что я делаю:

$snsclient = Aws\Sns\SnsClient::factory(array(
"version" => "2010-03-31",
"region" => "eu-west-1",
"credentials" => array(
"key" => "***********",
"secret" => "***********")
));
$publish_result = $snsclient->publish(array(
"TargetArn" => "arn:aws:sns:eu-west-1:*********:endpoint/GCM/*******/********",
"Message" => "MESSAGE",
"Subject" => "SUBJECT",
));

что затем приводит к

object(Aws\Result)#96 (1) {
["data":"Aws\Result":private]=>
array(2) {
["MessageId"]=>
string(36) "********************"["@metadata"]=>
array(3) {
["statusCode"]=>
int(200)
["effectiveUri"]=>
string(35) "https://sns.eu-west-1.amazonaws.com"["headers"]=>
array(4) {
["x-amzn-requestid"]=>
string(36) "****************"["content-type"]=>
string(8) "text/xml"["content-length"]=>
string(3) "294"["date"]=>
string(29) "Mon, 27 Jun 2016 10:20:26 GMT"}
}
}
}

РЕДАКТИРОВАТЬ:
Я только что понял, что если я установлю MessageStructure на json, а затем установлю Message на ‘{«GCM»: «{\» data \ «: {\» message \ «: \» aa \ «}}»}’, он отправит хорошо.
В чем проблема отправки его в сыром виде?
Какой путь мне выбрать? Я думал, что raw лучше, так как он позволит мне использовать одну и ту же структуру для отправки на iOS и Android (и тогда SNS создаст сообщение для меня правильно) …

Спасибо,
Джозеф.

2

Решение

Как подробно описано в Push-уведомления на мобильные устройства с помощью Amazon SNS, Вот что вам нужно сделать, чтобы создать мобильное приложение, которое может получать push-уведомления:

  1. Создайте приложение для поддерживаемого устройства и API обмена сообщениями. Для получения уведомлений приложение должно зарегистрироваться в службе уведомлений локальной платформы с помощью API-интерфейсов устройства.
  2. Создать представление приложения на стороне сервера, используя SNS CreatePlatformApplication функция.
  3. Зарегистрируйте устройства, когда ваш серверный код узнает о них, позвонив в SNS CreatePlatformEndpoint функция. Эта функция возвращает ARN (имя ресурса Amazon), которое однозначно идентифицирует устройство.
  4. Отправляйте сообщения непосредственно на определенное устройство, вызывая Publish функция с ARN устройства.
  5. Отправлять сообщения на все устройства, подписанные на тему, вызывая тот же Publish функция, но используйте ARN темы.

Отличный пример кода был показан в данной документации, где использовалась новейшая версия AWS SDK для PHP, и он шаг за шагом покажет вам, как реализовать GCM.

Помимо этого, начинающие могут также использовать эти ссылки — Что такое сервис простых уведомлений Amazon? а также Начало работы с сервисом Amazon Simple Notification для дополнительной информации.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector