簡體   English   中英

亞馬遜SNS:JSON向Windows手機致敬

[英]Amazon SNS: JSON toasts to Windows Phones

當我使用Amazon SNS控制台向Windows Phone 8設備(即使用MPNS系統)發送Toast消息時,我只能以文本格式發送消息。 選擇“ 使用特定於平台的JSON消息字典 ”並發送JSON toast似乎永遠不會到達設備。 選擇平台特定格式時看到的默認消息是切片通知消息,這確實有效。

例如,以下消息既不會出錯也不會顯示在設備中:

{
"MPNS": "<?xml version=\"1.0\" encoding=\"utf-8\"?><wp:Notification xmlns:wp=\"WPNotification\"><wp:Toast><wp:Text1>Amazon</wp:Text1><wp:Text2>hooray</wp:Text2><wp:Param>this_is/my?extra=parameter</wp:Param></wp:Toast></wp:Notification>"
}

這已經過一些設備測試:Lumia 620與Windows Phone 8.0和Lumia 1020與8.1 beta。 我也嘗試從Java后端發送消息,但它只是再次顯示為原始JSON文本吐司( { "MPNS": ... )。 什么可能是錯的? JSON是有效的,XML格式正確......我很茫然。

我最近遇到了同樣的問題,並找到了解決方案。 MPNS的SNS文檔並未強調重要的一步,但可以在示例代碼中找到它,最終可以在文檔的消息屬性部分中找到。


必須在PublishRequest上設置兩個MPNS特定的MessageAttributes。 省略它們將導致交付失敗,沒有任何線索需要調查:即使您使用CloudWatch啟用交付狀態日志,也會丟失providerResponse

作為參考,屬性如下:

  1. 屬性名稱: AWS.SNS.MOBILE.MPNS.Type
    可能的值: token (用於磁貼通知), toastraw

  2. 屬性名稱: AWS.SNS.MOBILE.MPNS.NotificationClass
    可能的值: realtime *, priorityregular (實時為我工作)


也就是說,似乎無法使用SNS控制台向MPNS發送自定義內容。 但是使用API​​工作,所以這里是Java示例中使用Java SDK的摘錄:

AmazonSNS snsClient = ... /* initialise the client */;

Map<String, MessageAttributeValue> notificationAttributes = new HashMap<String, MessageAttributeValue>();
notificationAttributes.put("AWS.SNS.MOBILE.MPNS.Type",
        new MessageAttributeValue()
            .withDataType("String")
            .withStringValue("token")); // or "toast" or "raw", depending on the payload
notificationAttributes.put("AWS.SNS.MOBILE.MPNS.NotificationClass",
        new MessageAttributeValue()
            .withDataType("String")
            .withStringValue("realtime"));

PublishRequest request = new PublishRequest();
request.setMessageAttributes(notificationAttributes);
request.setMessageStructure("json");

request.setTargetArn(... /* topic or endpoint ARN */);
request.setMessage(... /* JSON payload */)

snsClient.publish(request);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM