2017-03-28 4 views
0

Ich versuche, eine Push-Benachrichtigung (PN) von meinem Anwendungsserver an ein Android-Gerät mit Veröffentlichungsendpunkt in der Amazon SNS-Konsole mit dieser Nachricht und Nachrichtenstruktur als json es funktioniert.Amazon SNS GCM/FCM Nachrichtennutzlast

Aber wenn ich versuche, das gleiche in Java zu implementieren, erhält das Gerät die Benachrichtigung nicht.

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; 
    } 

} 

Antwort auf der Konsole

Publist Anfrage: {TargetArn: arn: aws: sns: ap-Süd-1: 818862955266: Endpunkt/GCM/TestApp/a1ec8114-58c9-371b- bb76-d8d16e674e52, Nachricht: {"Standard": "Test", "GCM": {"Benachrichtigung": {"Text": "Hallo"}}}, MessageStructure: json, MessageAttributes: {}} {MessageId: 7dfb613c-06d0-5fe6-8766-3068c9438614} {AWS_REQUEST_ID = 3d0e13f4-b2be-5c95-ad43-42a07d2d5567}

Was könnte das Problem sein?

Auch ich folge dem Muster in der SO Antwort here vorgeschlagen.

Antwort

0

Das hat endlich funktioniert. Ich habe Jacksons Parser benutzt.

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()); 
Verwandte Themen