2017-01-01 1 views
0

Je tente d'utiliser AWS SNS pour les notifications push pour mon application. J'ai installé avec succès l'enregistrement des ARN des points de terminaison individuels en utilisant les informations d'utilisateur et l'identifiant de regsitration.AWS SNS - Push to GCM

Je peux envoyer un message individuel par l'amende de la console, mais je ne peux pas sembler comprendre comment l'envoyer par programmation (JAVA)

chemin Console: (travail)

http://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-directmobile.html

manière initialisées via JAVA:

private void publishToSNSEndpoint(String username) { 

     // Find an entry of a users SNS registration and Endpoint ARN 
     SNSPush pushConfig = snsPushService.findByUsername(username); 

     //Get ARN to String 
     String endpointARN = pushConfig.getSNSEnpointARN(); 

     //Generate SNS Push to user 
     String message = "{\"title\":\"Test_Title\",\"description\":\"Test_Description\"}"; 
     PublishRequest publishRequest = new PublishRequest(); 
     publishRequest.setMessage(message); 
     publishRequest.setTargetArn(endpointARN); 
     PublishResult publish = client.publish(publishRequest); 

     //print MessageId of message published to SNS topic 
     System.out.println("MessageId - " + publish.getMessageId()); 
    } 

Ce produit actuellement une erreur des éléments suivants:

En utilisant EndpointARN pour (Confirmé valide) Paramètre non valide: TargetArn Raison: Aucun critère trouvé pour la arn cible spécifiée (Service: AmazonSNS; Code d'état: 400; Code d'erreur: InvalidParameter;

utilisant SNS application ARN (Triple case est cochée est valide)

Paramètre non valide: TargetArn Raison: arn: aws: sns: ap-sud-xxxxxxxxx-xxxx est pas valide pour publier (service: AmazonSNS; code d'état: 400; code d'erreur: InvalidParameter;

il y a une documentation here mais il semble assez vieux et ne fonctionne pas plus

..

Ma question est: Comment puis-je envoyer des notifications Push à un EndpointARN individuel dans AWS SNS par programmation en utilisant Java et AWS SDK.

+0

J'ai rencontré une erreur similaire un peu récemment. J'ai dû ** définir la région ** associée à mon point de terminaison pour qu'elle soit accessible par votre connexion. L'avez-vous fait explicitement? – ccjmne

+0

Oui, je l'ai fait plus tôt lors de la création du point de terminaison. Définissez l'objet SNSClient sur ma région. Merci pour les suggestions cependant. – Yonkee

Répondre

0

Je viens juste de le faire pour tous ceux qui rencontrent le même problème.

Le formatage des messages est un cauchemar et différent pour chaque plate-forme.

Je devais ajouter ceci.

publishRequest.setMessageStructure("json"); 

Ceci est pour GCM - Android

String gcmMessage = "{ \"GCM\": \"{ \\\"data\\\": { \\\"message\\\": \\\"Hi, AWS. Sort out your JSON parsing.\\\" } }\" }";