Простой вопрос, как отправить номер значка в push-уведомлениях, используя AWS SNS?
Я узнал, что его нужно как-то отформатировать в формате json, но не уверен, как это сделать.
В документации AWS нет этой информации, или, по крайней мере, я ее не нашел.
Спасибо!
Мой код до сих пор, который работает:
$sns = SnsClient::factory(array(
'key' => $this->app()->getConfig()->get('aws.sns.key'),
'secret' => $this->app()->getConfig()->get('aws.sns.secret'),
'region' => $this->app()->getConfig()->get('aws.sns.region'),
));
$payload = [
'Message' => $this->_message,
'TargetArn' => $this->_device->getDeviceArn()
];
$sns->publish($payload);
Прежде всего, взгляните на этот форум разработчиков AWS.
статья
Подводя итог этой статье, в вашем примере _message должен выглядеть примерно так:
{"APNS":"{\"aps\":{\"alert\":\"<message>\"}}"}
и вам нужно добавить
'MessageStructure' => 'json',
в $payload
Вот код, который я использую для создания сообщения JSON:
$contents = array();
$contents['badge'] = "1";
$contents['alert'] = addslashes($push_message);
$contents['sound'] = "default";
$push = array("aps" => $contents);
$push_json = json_encode($push);
$json = json_encode(array('APNS' => $push_json));
$sns->publish(array('MessageStructure' => 'json',
'Message' => $json,
'TargetArn' => $endpointArn));
Надеюсь это поможет!
Если вам нужно сбросить номер значка, вы можете опубликовать его в конечной точке SNS с помощью {badge:0}
{
"APNS_SANDBOX":"{\"aps\":{\"alert\":\"Removing the badge\", \"badge\":0}}"}
Надеюсь, что это помогает кому-то.