繁体   English   中英

通过Amazon SNS以JSON格式发送iOS推送

[英]Send iOS pushnotifications in JSON format trough Amazon SNS

我正在将我自己的iOS pushservice迁移到Amazon SNS。 以前我是通过我们自己的服务器推送消息,这已经不够了。

后端是用PHP构建的,这是我用旧解决方案发送推送的一些代码:

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

这是我发送的通知的正文。 现在,我希望通过AWS PHP SDK 发布方法获得通过SNS发送的相同通知。

我已经发现我必须发送推送通知:

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

在上面的代码示例中,$ message是什么? 所有帮助表示赞赏!

编辑:我已成功通过以下JSON发送推送通过SNS仪表板。 我的问题是通过PHP SDK重现这一点。

{“APNS”:“{\\”aps \\“:{\\”alert \\“:{\\”body \\“:\\”7500 \\“,\\”action-loc-key \\“:\\”读取此\\“, \\“loc-key \\”:\\“%@ \\”,\\“loc-args \\”:[\\“Message \\”]},\\“badge \\”:\\“0 \\”,\\“sound \\”: \\“默认\\”,\\“content-available \\”:\\“1 \\”}}}}

我设法解决了这个问题!

下面的代码完成了这个技巧,我以前的尝试没有创建一个好的json-string(注意那里有两个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
        ));

我不知道这是否适用于您的目的,但在AWS SNS API仪表板中发送单个消息的格式如下:

{"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替换APNS_SANDBOX

关于GrapplingCoder的答案,这里是用于发送基本推送通知的JSON,其中包含使用默认通知声音的文本:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM