通过AWS SNS将Json Payload发送到MPNS

时间:2015-07-29 06:06:54

标签: ruby-on-rails ruby amazon-sns aws-sdk mpns

我想在推送通知中将json有效负载发送到Windows phone 7+。我正在使用 MPNS 。 我正在使用 AWS SNS 服务发送推送通知。如果我发送一个字符串有效负载。一切都适用于字符串有效负载。我被 Json有效载荷困住了。

paylaod = {default: "None", MPNS:  "<?xml version=\"1.0\" encoding=\"utf-8\"?><wp:Notification xmlns=\"WPNotification\"><wp:Toast><wp:Text1>SNS Test Message</wp:Text1></wp:Toast></wp:Notification>"}

resp = SNS.publish( target_arn: "arn:aws:sns:usXXXb64", message: paylaod.to_json,  message_structure: 'json')

1 个答案:

答案 0 :(得分:1)

我非常不熟悉Ruby语言,但在我看来,您的调用缺少消息属性,这对于基于JSON的MPNS消息是必需的。

这两个属性如下:

作为参考,属性如下:

  1. 属性名称:AWS.SNS.MOBILE.MPNS.Type
    类型:字符串
    可能的值:token(对于图块通知),toastraw

  2. 属性名称:AWS.SNS.MOBILE.MPNS.NotificationClass
    类型:字符串
    可能的值:realtime *,priorityregular (使用Java SDK实时为我工作)

  3. 所以你的最后一行应该是这样的:

    resp = SNS.publish(
        target_arn: "arn:aws:sns:usXXXb64",
        message: paylaod.to_json,
        message_structure: 'json',
        message_attributes: {
            "AWS.SNS.MOBILE.MPNS.Type" => {
                data_type: "String",
                string_value: "toast"
            },
            "AWS.SNS.MOBILE.MPNS.NotificationClass" => {
                data_type: "String",
                string_value: "realtime"
            }
        })
    

    请注意,message_structure: 'json'行同样重要。