Я работаю над переносом своего собственного 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 \»}} «}
Мне удалось решить проблему!
Следующий код помог, мои предыдущие попытки не создали ни хорошую 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
));
Я не знаю, будет ли это работать для ваших целей, но на панели инструментов 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
В завершение ответа GrapplingCoder, вот JSON для отправки основного push-уведомления с текстом, который использует звук уведомления по умолчанию:
{
"APNS": "{\"aps\":{\"alert\": \"This is your message text!\",\"sound\":\"default\"} }"}