4 votes

message gcm via javascript

Je veux envoyer un message gcm à travers un code javascript. Pour cela, nous avons besoin de poster un objet json.

L'url et le format de l'objet json sont donnés dans la documentation de gcm : http://developer.Android.com/google/gcm/adv.html .

A des fins de test, j'avais écrit un code java qui fonctionne parfaitement. Mais le code javascript ne fonctionne pas. Si quelqu'un a un exemple de code fonctionnel (javascript pour gcm), merci de le poster.

String body = "registration_id=proper_id&data.number=12345678";
byte[] bytes = body.getBytes();
HttpURLConnection conn = getConnection(url);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setFixedLengthStreamingMode(bytes.length);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
conn.setRequestProperty("Authorization", "key=" + key);
OutputStream out = conn.getOutputStream();
out.write(bytes);

code javascript :

var http = new XMLHttpRequest();
var url = "https://android.googleapis.com/gcm/send";
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {        document.getElementById("target").innerHTML =    http.responseText;
}
}
http.open("POST", url, false);
http.setRequestHeader("Content-type", "application/json");
http.setRequestHeader("Authorization", "key=proper_api_key");
var data = '{ "collapse_key": "qcall","time_to_live": 108, "delay_while_idle": true,"data": {"number":"12345678"},"registration_ids":["proper_id"]}';
http.send(data);

3voto

Dodge Points 4284

Cela ne fonctionnera pas pour les raisons suivantes Politique relative aux produits de même origine

En informatique, la politique de l'origine identique est un concept de sécurité important. pour un certain nombre de langages de programmation côté navigateur, tels que JavaScript. Cette politique permet aux scripts de s'exécuter sur des pages provenant du même site - une combinaison de schéma, de nom d'hôte, et de numéro de port port - d'accéder aux méthodes et aux propriétés de l'autre sans aucune restrictions spécifiques, mais empêche l'accès à la plupart des méthodes et des propriétés sur des pages situées sur des sites différents.

En bref : Vous ne pouvez pas envoyer de HTTP Post vers d'autres domaines que celui à partir duquel votre script s'exécute.

Ici, vous pouvez voir le les règles de la politique de l'égalité d'origine

Vous devrez utiliser votre code Java ou, si votre hébergeur ne prend pas en charge Java, vous pourrez utiliser PHP. Cette question concerne le GCM et le PHP semble avoir un script PHP fonctionnel pour GCM.

Bonne chance

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X