【问题标题】:Amazon SNS GCM/FCM message payloadAmazon SNS GCM/FCM 消息负载
【发布时间】:2017-08-22 03:09:27
【问题描述】:

我正在尝试使用 Amazon SNS 控制台中的发布端点将推送通知 (PN) 从我的应用程序服务器发送到 android 设备,此消息和消息结构为 json,它工作正常。

{
"GCM": "{ \"notification\": { \"text\": \"test message\" } }"
}

但是当我尝试在 Java 中实现相同的功能时,设备没有收到通知。

PublishRequest publishRequest = new PublishRequest();
        publishRequest.setTargetArn("arn:aws:sns:ap-south-1:818862955266:endpoint/GCM/TestApp/a1ec8114-58c9-371b-bb76-d8d16e674e52");
        String message = "{\"GCM\": \"{ \"notification\": { \"text\": \"test message\" } }\"}";

        ObjectMapper mapper = new ObjectMapper();
        PushRequest pushRequest = new PushRequest();
        pushRequest.setDef("Test");

        GCM gcm = new GCM();
        Notification notification = new Notification();
        notification.setText("hello");
        gcm.setNotification(notification);
        pushRequest.setGcm(gcm);

        String jsonInString = mapper.writeValueAsString(pushRequest);
        publishRequest.setMessage(jsonInString);
        publishRequest.setMessageStructure("json");
        System.out.println("Publist request:"+publishRequest.toString());
        PublishResult publishResult = amazonSNSTemplate.getAmazonSNSClient().publish(publishRequest);
        System.out.println(publishResult.toString());
        System.out.println(publishResult.getSdkResponseMetadata().toString());


public class PushRequest {

    @JsonProperty("default")
    private String def;
    @JsonProperty("GCM")
    private GCM gcm;
    public String getDef() {
        return def;
    }
    public void setDef(String def) {
        this.def = def;
    }
    public GCM getGcm() {
        return gcm;
    }
    public void setGcm(GCM gcm) {
        this.gcm = gcm;
    }



}

public class GCM {
    private Notification notification;

    @JsonProperty("notification")
    public Notification getNotification() {
        return notification;
    }

    public void setNotification(Notification notification) {
        this.notification = notification;
    }


}
public class Notification {
    private String text;

    @JsonProperty("text")
    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

}

控制台响应

发布请求:{TargetArn: arn:aws:sns:ap-south-1:818862955266:endpoint/GCM/TestApp/a1ec8114-58c9-371b-bb76-d8d16e674e52,消息: {"default":"Test","GCM":{"notification":{"text":"hello"}}},MessageStructure: json,MessageAttributes: {}} {MessageId: 7dfb613c-06d0-5fe6-8766-3068c9438614} {AWS_REQUEST_ID=3d0e13f4-b2be-5c95-ad43-42a07d2d5567}

可能是什么问题?

另外,我遵循 SO 答案 here 中建议的模式。

【问题讨论】:

    标签: java json amazon-web-services amazon-sns


    【解决方案1】:

    这终于奏效了。我用的是杰克逊解析器。

    public class PushRequest {
    
        @JsonProperty("default")
        private String def;
        @JsonProperty("GCM")
        private GCM gcm;
        public String getDef() {
            return def;
        }
        public void setDef(String def) {
            this.def = def;
        }
        public GCM getGcm() {
            return gcm;
        }
        public void setGcm(GCM gcm) {
            this.gcm = gcm;
        }
    
    
    
    }
    
    public class GCM {
        private Notification notification;
    
        @JsonProperty("notification")
        public Notification getNotification() {
            return notification;
        }
    
        public void setNotification(Notification notification) {
            this.notification = notification;
        }
    
    
    }
    public class Notification {
        private String text;
    
        @JsonProperty("text")
        public String getText() {
            return text;
        }
    
        public void setText(String text) {
            this.text = text;
        }
    
    }
    
    
    PublishRequest publishRequest = new PublishRequest();
                publishRequest.setTargetArn("arn:aws:sns:ap-south-1:818862955266:endpoint/GCM/TestApp/ac338195-1b87-3521-bd98-b7867a83ff27");
    
    //          String message = "{\"GCM\": \"{ \"notification\": { \"text\": \"test message\" } }\"}";
    
                ObjectMapper mapper = new ObjectMapper();
                PushRequest pushRequest = new PushRequest();
                pushRequest.setDef("Testing out FB messages");
    
                GCM gcm = new GCM();
                Notification notification = new Notification();
                notification.setText("hello");
                gcm.setNotification(notification);
                pushRequest.setGcm(gcm);
    
                String jsonInString = mapper.writeValueAsString(pushRequest);
                publishRequest.setMessage(jsonInString);
                publishRequest.setMessageStructure("json");
                System.out.println("Publist request:"+publishRequest.toString());
                PublishResult publishResult = amazonSNSTemplate.getAmazonSNSClient().publish(publishRequest);
                System.out.println(publishResult.toString());
                System.out.println(publishResult.getSdkResponseMetadata().toString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 2014-11-17
      • 2021-11-07
      • 2015-09-24
      • 2015-10-12
      • 1970-01-01
      相关资源
      最近更新 更多