[英]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.