Java 谷歌云消息-上游

Java 谷歌云消息-上游,java,android,google-cloud-messaging,Java,Android,Google Cloud Messaging,我能够将下游数据从我的服务器发送到我的android应用程序。 但我找不到如何发送上行消息 在Android方面,我正确地更改了AndroidManifest.xml文件,因为下游消息可以工作(我做了吗?) 在服务器端,我创建了XmppReceiverServlet,并相应地更新了web.xml文件,并将xmpp_消息添加到appengine-web.xml中 但是,当我尝试从应用程序向服务器发送消息时,似乎什么都没有发生。下面的代码从未在服务器端触发POST。 (我举了这个例子) Atomic

我能够将下游数据从我的服务器发送到我的android应用程序。 但我找不到如何发送上行消息

在Android方面,我正确地更改了AndroidManifest.xml文件,因为下游消息可以工作(我做了吗?)

在服务器端,我创建了XmppReceiverServlet,并相应地更新了web.xml文件,并将
xmpp_消息
添加到appengine-web.xml中

但是,当我尝试从应用程序向服务器发送消息时,似乎什么都没有发生。下面的代码从未在服务器端触发POST。 (我举了这个例子)

AtomicInteger msgId=新的AtomicInteger();
字符串发送者\u ID=“MyGoogleDevelopersConsoleProjectId”;
[...]
新建异步任务(){
@凌驾
受保护字符串doInBackground(无效…参数){
字符串msg=“”;
试一试{
Bundle data=新Bundle();
putString(“我的消息”,“你好世界”);
putString(“我的动作”,“说你好”);
字符串msgId=Integer.toString(msgId.incrementAndGet())
发送(发送者ID+“@gcm.googleapis.com”,msgId,数据);
msg=“已发送消息”#“+msgId
}捕获(IOEX异常){
msg=“错误:”+ex.getMessage();
}
返回味精;
}
@凌驾
受保护的void onPostExecute(字符串msg){
打印(“onPostExecute:+msg”);
}
}.执行(空,空,空);

知道我做错了什么吗?

你的服务器成功连接到CCS吗?我不知道。我不确定是否理解这个问题:-/我以为我除了在服务器端等待帖子之外没有什么可做的。顺便说一句,我的服务器是一个应用引擎Java服务器。我明白了,错过了应用引擎部分。你能尝试使用@appspot.com而不是SENDER_ID+“@gcm.googleapis.com”吗?谢谢Arthur的回答,但它确实改变了任何东西,在我的servlet的doPost上仍然没有任何改变。为什么从上面推送通知如此简单,而从下面发送一些东西却如此扭曲?!!?
AtomicInteger msgId = new AtomicInteger();
String SENDER_ID = "MyGoogleDevelopersConsoleProjectId";
[...]
new AsyncTask<Void, Void, String>() {
    @Override
     protected String doInBackground(Void... params) {
     String msg = "";
     try {
         Bundle data = new Bundle();
         data.putString("my_message", "Hello World");
         data.putString("my_action", "SAY_HELLO");
         String msgId = Integer.toString(msgId.incrementAndGet())
         gcm.send(SENDER_ID + "@gcm.googleapis.com", msgId, data);
         msg = "Sent message #" + msgId
     } catch (IOException ex) {
         msg = "Error :" + ex.getMessage();
     }
     return msg;
 }

 @Override
 protected void onPostExecute(String msg) {
     MyUtils.print("onPostExecute: " + msg);
     }
 }.execute(null, null, null);