2015-07-29 3 views
0

Je souhaite envoyer une charge utile JSON vers un téléphone Windows 7+ dans une notification push. J'utilise MPNS. J'utilise le service AWS SNS pour envoyer une notification push. SI j'envoie une charge utile String. Tout fonctionne pour la charge utile de la chaîne. Je suis coincé avec JSON charge utile.Envoyer une charge utile Json vers MPNS par AWS SNS

paylaod = {default: "None", MPNS: "<?xml version=\"1.0\" encoding=\"utf-8\"?><wp:Notification xmlns=\"WPNotification\"><wp:Toast><wp:Text1>SNS Test Message</wp:Text1></wp:Toast></wp:Notification>"} 

resp = SNS.publish(target_arn: "arn:aws:sns:usXXXb64", message: paylaod.to_json, message_structure: 'json') 
+0

'message_structure: 'json'' ne signifie pas que" ma charge utile est JSON ". Si vous définissez cela parce que votre charge utile est JSON, ne le faites pas. –

+0

@ Michael-sqlbot je ne peux pas le définir comme une chaîne. En cas de chaîne, le toast affichera toutes les informations à l'utilisateur. Cette information dans la notification doit montrer partiellement et l'autre partie sera utilisée par l'application en interne –

Répondre

1

Je suis terriblement familier avec le langage Ruby, mais il me semble que votre appel n'a pas attributs de message, qui sont obligatoires pour les messages MPNS basés sur JSON.

Les deux attributs sont les suivants:

Pour référence, les attributs sont les suivants:

  1. Nom d'attribut: AWS.SNS.MOBILE.MPNS.Type
    Type: chaîne
    Valeurs possibles: token (pour tuile notifications), toast ou raw

  2. Nom de l'attribut: AWS.SNS.MOBILE.MPNS.NotificationClass
    Type: chaîne
    Valeurs possibles: realtime *, priority, regular (temps réel a fonctionné pour moi avec le SDK Java)

donc votre dernière ligne devrait ressembler à ceci:

resp = SNS.publish(
    target_arn: "arn:aws:sns:usXXXb64", 
    message: paylaod.to_json, 
    message_structure: 'json', 
    message_attributes: { 
     "AWS.SNS.MOBILE.MPNS.Type" => { 
      data_type: "String", 
      string_value: "toast" 
     }, 
     "AWS.SNS.MOBILE.MPNS.NotificationClass" => { 
      data_type: "String", 
      string_value: "realtime" 
     } 
    }) 

Notez que le message_structure: 'json' ligne est tout aussi important.

+0

ouais j'ai compris cela aussi. Mais il y a encore un problème: les toasts ne viennent pas lorsque l'application est fermée si le périphérique est de niveau supérieur ou égal à 8.1 –