PHP AWS SNS SDK - 徽章

时间:2014-11-19 23:59:44

标签: php amazon-web-services amazon-sns

简单的问题,如何使用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);

2 个答案:

答案 0 :(得分:2)

首先,看看这个AWS开发者论坛 article

总结一下这篇文章,在你的例子中,_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));

希望这有帮助!

答案 1 :(得分:0)

如果您需要重置徽章编号,可以使用{badge:0}

发布到SNS端点
{
    "APNS_SANDBOX":"{\"aps\":{\"alert\":\"Removing the badge\", \"badge\":0}}"
}

希望能有所帮助。