Envoyer Multi Notification de la GCM, à l'aide de JSON
Je veux envoyer des notifications multiples pour de nombreux appareils enregistrés à la fois à l'aide de GCM, et je sais que cela ne peut pas être fait à l'aide de la plaine de texte, car il ne peut être utilisé pour envoyer une notification pour un seul appareil à la fois. Donc à la place j'ai décidé de faire le corps HTTP du contenu à l'aide de JSON et j'ai réussi à faire la chaîne de caractères qui représente l'objet JSON:
{ collapse_key : my_CollapseKey, data.message : myMessage, registration_ids : ["regid1","regid2",...] }
Mais à chaque fois que j'envoie la demande-je obtenir un 400 réponse des états Bad Request, et quand je me réfère au document de GCM Présentation de l'Architecture il affirme que
Réponse de 400 ne s'applique que pour JSON demandes. Indique que la demande n'a pas pu être analysée comme JSON, ou il contenait des champs non valides (par exemple, passage d'une chaîne où un certain nombre a été prévu)
Ici est l'instantané à partir de mon application web développée en ASP.Net que j'ai utilisé pour envoyer la demande:
request.ContentType = "application/json"
request.Headers.Add("Authorization: key=My_Server_Key")
request.Headers.Add("Sender: id=myProject_ID")
Dim collapsKey = Guid.NewGuid.ToString("n")
Dim data As String = "{ collapse_key : " + collapsKey + "," + " data.message : " + HttpUtility.UrlEncode(TextBox1.Text) + "}" + ", registration_ids : " + jsonids1 + "}"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(data)
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Aucune idée de comment je peut analyser mon objet JSON correctement et envoyer des notifications multiples?
toute aide sera complètement apprécié.
ce qui concerne
OriginalL'auteur Husam A. Al-ahmadi | 2013-02-15
Vous devez vous connecter pour publier un commentaire.
Le JSON devrait ressembler à ceci :
Vous avez oublié de créer un dictionnaire pour les données.
De la GCM, documentation :
Désolé, il fixe à registration_ids.
J'ai essayé comme vous l'avez suggéré, mais n'a pas fonctionné, et je n'ai vraiment pas eu votre point dans la création d'un dictionnaire de données
Je veux dire qu'au lieu de mettre
data.message : myMessage
dans votre JSON, vous devriez mettre"data" : {"message" : "myMessage"}
. Qui ferait de la valeur de la clé de données d'un dictionnaire. C'est ainsi que le GCM documentation dit qu'il devrait être - developer.android.com/google/gcm/gcm.html.Vous devez utiliser des guillemets pour toutes les Chaînes dans le JSON, il devrait donc être :
{"registration_ids":["APA91bGzn_0QP_hWt7f-whQKkAJ4-iuGlRfQqA_sWcjvOZZ3v-5y5PSNFEPrD-siR5WSyskTVaBST5LHDsIFCTZqY_-ectSPDBUeJGstmabKSLkcoNuJb5CngeQ__3NCwRdrXF3WKkirMbE-TdHABDyRFGgJEJK-dQ",".....","...."],"data":{"message":"Wlecome to the app",},"collapse_key":"wlecome_message",}
OriginalL'auteur Eran