2017-01-01 139 views
0

我試圖使用AWS SNS推送通知我的應用程序。我已經使用用戶信息和註冊ID成功設置了單個端點ARN的註冊。AWS SNS - 推到GCM

我可以通過控制檯精發送個人信息,但是我似乎無法弄清楚如何發送程序(JAVA)

控制檯方式:(工作)

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

經由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()); 
    } 

這目前產生以下的誤差:

使用使用EndpointARN(確認有效)無效的參數: TargetArn原因:沒有終點找到目標阿爾恩指定 (服務:AmazonSNS;狀態碼:400;錯誤代碼:InvalidParameter;

使用SNS應用ARN(三重檢查,這是有效的)

無效參數:TargetArn原因: 阿爾恩:AWS:SNS:AP-東南XXXXXXXXX-XXXX是無效的發佈到 (服務:AmazonSNS;狀態代碼:400;錯誤代碼:參數無效;

有一些文檔here但似乎很老了,不能再工作

我的問題是:我如何發送推送通知到個人EndpointARN在AWS SNS程序使用Java和AWS的SDK。

+0

我遇到類似的錯誤最近一些。我必須**設置與我的端點相關聯的區域**,以便它可以通過您的連接訪問。已經明確設定了嗎? – ccjmne

+0

是的,我在早期的EndPoint創建過程中這麼做過。將SNSClient對象設置爲我的區域。謝謝你的建議。 – Yonkee

回答

0

我只工作了的人誰越過了同樣的問題來了。

消息格式是爲每個平臺的夢魘和不同。

我不得不添加此。

publishRequest.setMessageStructure("json"); 

這是GCM - Android電子

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