当前位置: 首页 > 知识库问答 >
问题:

通过亚马逊社交网络以JSON格式发送iOS推送通知

左丘阳晖
2023-03-14

我正在将自己的iOS推送服务迁移到亚马逊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 dashboard成功发送了pushnotification。我的问题是通过PHP SDK重现这一点。

{"APNS":{\"aps\":{\"警报\":{\"body\":\"7500\",\"action-loc-key\":\"读取此\",\"loc-key\":\"%@\", \"loc-args\":[\"消息\"]}, \"徽章\":\"0\",\"声音\":\"默认\",\"内容可用\":\"1\"} }" }

共有3个答案

顾淳
2023-03-14

离开GrapplingCoder的答案,下面是发送基本推送通知的JSON,其中包含使用默认通知声音的文本:

{
"APNS": "{\"aps\":{\"alert\": \"This is your message text!\",\"sound\":\"default\"} }"
}
麻茂材
2023-03-14

我不知道这是否适合您的目的,但在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_SANDBOX替换为APNS

万俟财
2023-03-14

我设法解决了这个问题!

下面的代码成功了,我之前的尝试没有创建一个好的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
        ));
 类似资料:
  • 我一直在努力解决亚马逊SNS推送通知中的一个特殊问题,这在任何亚马逊文档中都找不到。 我正在尝试发送包含<code>的通知 < code >尝试我们的新M 提前致谢!

  • 我想向移动设备发送丰富的推送通知。我的意思是,当用户收到推送通知时,设备可以显示图像或视频等媒体附件(例如https://medium . com/@ tsif/IOs-10-rich-push-notifications-with-media-attachments-a54dc 86586 c 2)。 亚马逊SNS推送通知是否支持富推送功能?

  • 我正在尝试通过php向Android应用程序发送推送通知。我设置了亚马逊SNS帐户,并使用谷歌服务器密钥为GCM API创建了SNS平台。 使用 AWS 凭证,我编写了一个 cron,它从数据库读取通知消息,并使用 Amazon php api 发布到 sns 服务。我正在以 cron 获取 Amazon 终端节点,并在其上发布通知。 我收到的状态是通行证和通知请求。但设备上没有收到实际通知。 我

  • 我想通过向Android手机endpoint发送推送通知。 已配置并已准备好发送通知。在使用我发送的 JSON 的 SNS 控制台中 { “GCM”: “{ ”通知“: { ”标题“: ”标题“, ”正文“: ”正文“} 但我只收到空notification.No正文,没有标题(只有应用程序图标)。

  • 我已经谷歌了这个问题,并搜索了AWS文档,但仍然找不到答案。 在哪里为GCM Android定义AWS SNS服务的消息推送图标图像?

  • 我们一直在通过Amazon SNS和Google Cloud Messaging(GCM)向Android设备发送消息。这是我们正在输入SNS发送消息功能的原始SNS json消息: 由于某种原因,带有和的“通知”部分似乎被忽略了。设备上未显示任何通知。 任何人都可以确认通知可以通过SNS发送,或者(正如我们所怀疑的那样)是否存在一些限制,其中只能理解json的数据部分?