Отправка push-уведомлений iOS в формате JSON через Amazon SNS

Я работаю над переносом своего собственного iOS-pushservice в Amazon SNS. Ранее я отправлял сообщения через наш собственный сервер, которого уже недостаточно.

Бэкэнд построен на PHP, и это некоторый код того, как я отправляю pushnotification со старым решением:

$body = array(
'alert' => array('body' => $id,
'action-loc-key' => 'read this',
'loc-key' => '%@',
'loc-args' => array($message)),
'badge' => '0',
'sound' => 'default',
'content-available' => '1'
);

Это тело уведомления, которое я отправил. Теперь я хочу получить такое же уведомление для отправки через SNS с помощью AWS PHP SDK публиковать-метод.

Я понял, что должен отправить push-уведомление через это:

$result = $snsClient->publish(array(
'TargetArn' => $target,
// Message is required
'Message' => $message,
'MessageStructure' => 'json'
));

Что будет $ message в приведенном выше примере кода? Вся помощь приветствуется!

Изменить: Я успешно отправил push-уведомления через панель мониторинга SNS со следующим JSON. Моя проблема состоит в том, чтобы воспроизвести это через PHP SDK.

{
«APNS»: «{\» aps \ «: {\» alert \ «: {\» body \ «: \» 7500 \ «, \» action-loc-key \ «: \» прочитать это \ «, \ «loc-key \»: \ «% @ \», \ «loc-args \»: [\ «Message \»]}, \ «badge \»: \ «0 \», \ «sound \»: \ «default \», \ «content-available \»: \ «1 \»}} «}

4

Решение

Мне удалось решить проблему!

Следующий код помог, мои предыдущие попытки не создали ни хорошую json-строку (обратите внимание, что там есть два json_encodes), либо не имели «json-ключа по умолчанию», который требуется.

$message = json_encode(array(
'default' => $message,
'APNS' => json_encode(array(
'aps' => array(
'alert' => array('body' => $id,
'action-loc-key' => 'read this',
'loc-key' => '%@',
'loc-args' => array($message)),
),
'badge' => '0',
'sound' => 'default',
'content-available' => '1'
))
));

$result = $snsClient->publish(array(
'TargetArn' => $target,
'MessageStructure' => 'json',
'Message' => $message
));
11

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

Я не знаю, будет ли это работать для ваших целей, но на панели инструментов API AWS SNS для отправки одного сообщения формат выглядит так:

{"APNS_SANDBOX": "{\"aps\": {\"alert\":\"HERE IS AN ALERT, BADGE, and SOUND!\",\"badge\": 1,\"sound\":\"bingbong.aiff\"}}"}

Чтобы отправить тему в панель инструментов, вы используете строку, подобную этой:

{
"default": "HERE IS AN ALERT, BADGE, and SOUND",
"APNS_SANDBOX": "{\"aps\": {\"alert\":\"HERE IS AN ALERT, BADGE, and SOUND!\",\"badge\": 1,\"sound\":\"bingbong.aiff\"}}"}

Экранированные кавычки обязательны при отправке с приборной панели.

При отправке на производство вы заменяете APNS_SANDBOX с APNS

6

В завершение ответа GrapplingCoder, вот JSON для отправки основного push-уведомления с текстом, который использует звук уведомления по умолчанию:

{
"APNS": "{\"aps\":{\"alert\": \"This is your message text!\",\"sound\":\"default\"} }"}
2