2017-03-28 19 views
0

このメッセージとメッセージ構造を持つAmazon SNSコンソールの公開エンドポイントを使用してアプリケーションサーバーからアンドロイドデバイスにプッシュ通知(PN)を送信しようとしましたが、正常に動作しています。Amazon SNS GCM/FCMメッセージのペイロード

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

} 

コンソール

Publist要求に応答:{TargetArn: ARN:AWS:SNS:AP-南1:818862955266:エンドポイント/ GCM /でTestApp/a1ec8114-58c9-371b-メッセージ構造体: json、MessageAttributes:{}} {MessageId:{"message": "}"メッセージ構造体: {"Default": "Test"、 "GCM" 7dfb613c-06d0-5fe6-8766-3068c9438614} {AWS_REQUEST_ID = 3d0e13f4-b2be-5c95-ad43-42a07d2d5567}

何が問題なのですか?

また、私はSO回答hereで提案されているパターンに従っています。

答えて

0

これは最終的に機能しました。私はjacksonパーサーを使用しました。

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()); 
関連する問題