当前位置: 首页 > 知识库问答 >
问题:

通过javascript发送gcm消息

何和惬
2023-03-14

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

gcm文档:http://developer.android.com/google/gcm/adv.html.中给出了url和json对象格式

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

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);

脚本代码 :

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);

共有1个答案

龙逸清
2023-03-14

由于同源政策,这不起作用。

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

简而言之:您不能将 HTTP 帖子发送到脚本执行域以外的其他域。

在这里,您可以看到同源策略的规则

您需要使用Java代码,或者如果Hoster不支持Java,您可以使用PHP。这个关于GCM和PHP的问题似乎有一个适用于GCM的PHP脚本。

祝你好运

 类似资料:
  • 我有一个包含用户名数据库的服务器。我还有一个Android应用程序,用户可以在服务器数据库中注册自己的用户名,也可以在服务器的GCM部分注册设备。 我目前正在服务器代码中使用GCM演示,它将多播一个推送通知到每个注册的设备。但是,我希望它能够将推送通知发送给某些用户,而不是每个注册的GCM设备。 我的第一个想法是将数据库中的每个用户与其GCM注册表关联起来。这样行吗?我读过一些关于regID更改或

  • 通过http发送消息后。我无法在android设备4.0版上接收消息。4.当调试已启用但意图执行操作com时,它将触发OnReceive()方法。谷歌。Androidc2dm。意图注册,应该是com。谷歌。Androidc2dm。意图接收所以我无法得到消息。Rest一下,一切正常。 我的Android。清单文件代码为 和BroadCastRecector文件,其中OnRecve()方法在发送消息后

  • 我正在开发一个NativeScript Android应用程序,其中我希望用户能够在按下一个按钮后打开WhatsApp联系人(只知道电话号码)。我目前使用Nativescript-open-app打开WhatsApp。是否也可以打开对话? 要打开WhatsApp,我使用以下代码(也许可以修改“com.WhatsApp”?):

  • 试图从JavaScript SDK发送SNS消息。从亚马逊sns控制台发送的消息显示得很好, 下面是亚马逊 SNS 控制台 JSON 生成器输出,这对我来说工作正常。 但当SNS通过代码发送时,它会抛出消息错误;我正在使用Cordova推送通知插件,它需要包含一个消息标签。 1)如何为GCM(Android平台)格式化消息并将其发送?2)如何包含消息属性?

  • 我有一个连接到lambda的队列(fifo)。我想在lambda中向标准队列发送一条消息。但没有发送/接收任何消息。然而,如果我尝试从非SQS连接的lambda(通过AppSync)发送它,它会工作。 我查过: lambda有权发送SQS消息(您可以在那里看到) 由于我已成功地从另一个lambda(非SQS)向标准队列发送消息,因此正确配置了标准队列 SQS URL是否正确 控制台中不会显示任何错