0

SNSによってサイレントプッシュを定期的に送信したい。これはCloudwatchイベントによってトリガーされます。 プッシュメッセージは消えますが、生テキストとして送信され、SNSによってサイレントプッシュ形式に変換されません。あなたが見ることができるように、SNSの話題はうまくいき、黙っています。 何が間違っていますか? SNS publish AWS Cloudwatch Events公開トピックが機能しない:IOSサイレントプッシュ

Cloudwatch events

push

答えて

0

あなたはJSONリクエストを作成することができますラムダ関数、に送信し、これに苦労しないでください。

public String handle(JsonObject request, Context lambdaContext) throws 
BadRequestException, InternalErrorException { 
    logger = lambdaContext.getLogger(); 
    Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); 
    AmazonSNSClient client = new AmazonSNSClient().withRegion(Regions.EU_WEST_1); 

    PublishRequest rq = new PublishRequest(); 
    rq.setTopicArn(ENDPOINT_TOPIC); 
    rq.setMessageStructure("json"); 
    rq.setMessage(getSilentAppleMessage()); 
    messageAttributes.put("AWS.SNS.MOBILE.APNS.TTL", new MessageAttributeValue().withDataType("String").withStringValue("120")); 
    rq.setMessageAttributes(messageAttributes); 
    client.publish(rq); 
    GeneralResponse output = new GeneralResponse(); 
    output.setSuccess(true); 
    return getGson().toJson(output, GeneralResponse.class); 
} 

public static String getSilentAppleMessage() { 
    Map<String, Object> mainMessageMap = new HashMap<String, Object>(); 
    Map<String, Object> appleMessageMap = new HashMap<String, Object>(); 
    Map<String, Object> appMessageMap = new HashMap<String, Object>(); 

    appMessageMap.put("content-available", 1); 
    appleMessageMap.put("aps", appMessageMap); 
    mainMessageMap.put("default", ""); 
    mainMessageMap.put("APNS_SANDBOX", jsonify(appleMessageMap)); 

    logger.log(jsonify(mainMessageMap)); 
    return jsonify(mainMessageMap); 
} 

private static String jsonify(Object message) { 
    try { 
     return objectMapper.writeValueAsString(message); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     throw (RuntimeException) e; 
    } 
} 
関連する問題