Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript发送gcm消息_Javascript_Android_Google Cloud Messaging - Fatal编程技术网

通过javascript发送gcm消息

通过javascript发送gcm消息,javascript,android,google-cloud-messaging,Javascript,Android,Google Cloud Messaging,我想通过javascript代码发送gcm消息。为此,我们需要发布一个json对象 gcm文档中给出了url和json对象格式: 出于测试的目的,我编写了一个工作完美的java代码。但是javascript代码不起作用。如果有人有一些示例工作代码(gcm的javascript),请发布 String body = "registration_id=proper_id&data.number=12345678"; byte[] bytes = body.getBytes(); HttpUR

我想通过javascript代码发送gcm消息。为此,我们需要发布一个json对象

gcm文档中给出了url和json对象格式:

出于测试的目的,我编写了一个工作完美的java代码。但是javascript代码不起作用。如果有人有一些示例工作代码(gcm的javascript),请发布

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);
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);
这不起作用,因为

在计算中,同源策略是一个重要的安全概念 对于许多浏览器端编程语言,例如 JavaScript。该策略允许脚本在原始页面上运行 来自同一站点–方案、主机名和端口的组合 编号–访问彼此的方法和属性,无需 特定限制,但阻止访问大多数方法和 不同站点上跨页面的属性

简而言之:您不能将HTTP Post发送到脚本执行所在的域以外的域

在这里你可以看到

您需要使用Java代码,或者如果您的宿主不支持Java,您可以使用PHP。似乎有一个适用于GCM的PHP脚本

祝你好运