Android GCM给出空消息

Android GCM给出空消息,android,push-notification,google-cloud-messaging,Android,Push Notification,Google Cloud Messaging,我试图在android中以推送通知的形式从服务器获取消息。我可以点击服务器,但我从服务器收到了空消息。我可以在android中看到通知,没有消息。 这是我从服务器上得到的代码,我从 公共类GCMBroadcast{ @职位 @路径(“/getgcm”) 公共字符串getGcmData(){ String str=“成功”; 试一试{ System.out.println(“来自客户”); 发件人=新发件人( “AIZASYBBFXKBCYWQDE5QYJKWL-YLBX-F01ICug”); /

我试图在android中以推送通知的形式从服务器获取消息。我可以点击服务器,但我从服务器收到了空消息。我可以在android中看到通知,没有消息。 这是我从服务器上得到的代码,我从

公共类GCMBroadcast{
@职位
@路径(“/getgcm”)
公共字符串getGcmData(){
String str=“成功”;
试一试{
System.out.println(“来自客户”);
发件人=新发件人(
“AIZASYBBFXKBCYWQDE5QYJKWL-YLBX-F01ICug”);
//在android menifest中添加您自己的google api密钥
//使用此选项发送带有有效负载数据的消息
Message Message=new Message.Builder()
.collapseKey(“消息”)
.timeToLive(3)
.delayWhileIdle(真)
.addData(“消息”,“欢迎推送通知”)
//您可以在客户端应用程序上获取此消息
.build();
System.out.println(“message:+message”);
System.setProperty(“http.proxyHost”、“192.168.1.110”);
//写你自己的代理
setProperty(“http.proxyPort”、“8080”);
//编写自己的代理主机
//使用此代码向单个设备发送通知消息
结果=发送方
.发送(
消息
“APA91bFEmQ53TKnJQXa0HbF9lXGTMEyRrp-6H9-"zZNBdFAUMsvXIG0rpvKcXn5WBP77HSKW4SVO6GLHZWFWDDF-YQCBAVIQP4FQF05CWQDTJ8FNDNAQD8QDxBYAEQWDMK3AQI0IQ7L3XGF1DSBOOBFIJLFDZLJ4SG3Z"SA-v3IUz g4”,
1);
System.out.println(“消息结果:+Result.toString());
//使用此代码向多个用户发送通知消息
//装置
/*ArrayList DeviceList=新的ArrayList();
//添加设备注册ID,每个设备一个
设备列表
添加(“APA91bFEmQ53TKnJQXa0HbF9lXGTMEyRrp-6H9-"zZNBdFAUMsvXIG0rpvKcXn5WBP77HSKW4SVO6GLHZWFWDDF-YQCBAVIQP4FQF05CWQDTJ8MFNDNAQD8QDxBYAEQWDMK3AQI0IQ7L3XGF1SKBOOFFIJLFDZL4SG3Z"SA-v3IUz g4”);
//将此代码用于多播消息
MulticastResult MulticastResult=发送方.send(消息,
设备列表,0);
sender.send(消息,设备列表,0);
System.out.println(“消息结果:”
+multicastersult.toString());
*/
}捕获(例外e){
e、 printStackTrace();
str=“失败”;
}
返回str;
}
}

我在您声称获取代码的链接中使用了

,该消息是从
price
参数中提取的:

/**
 * Method called on Receiving a new message
 * */
@Override
protected void onMessage(Context context, Intent intent) {
    Log.i(TAG, "Received message");
    String message = intent.getExtras().getString("price");

    displayMessage(context, message);
    // notifies user
    generateNotification(context, message);
}
                Message message = new Message.Builder()
                        .collapseKey("message")
                        .timeToLive(3)
                        .delayWhileIdle(true)
                        .addData("message", "Welcome to Push Notifications")
但是,在服务器代码中,您将消息放在
message
参数中:

/**
 * Method called on Receiving a new message
 * */
@Override
protected void onMessage(Context context, Intent intent) {
    Log.i(TAG, "Received message");
    String message = intent.getExtras().getString("price");

    displayMessage(context, message);
    // notifies user
    generateNotification(context, message);
}
                Message message = new Message.Builder()
                        .collapseKey("message")
                        .timeToLive(3)
                        .delayWhileIdle(true)
                        .addData("message", "Welcome to Push Notifications")
这可以解释为什么会收到空消息


当然,您可能更改了从该链接获得的客户端代码,但由于您没有发布客户端代码,我无法知道这一点。

您好,在演示项目中,您得到了intent.getExtras().getString(“price”);当你使用php作为你的php管理员给你提供“name”字段,并使用该名称字段来获取消息时,我也解决了这个问题

 @Override
        protected void onMessage(Context context, Intent intent) {
            Log.i(TAG, "Received message");
            String message = intent.getExtras().getString("message");
            displayMessage(context, message);
            // notifies user
            generateNotification(context, message);
        }

参数和变量键必须匹配

您通过此网页进行了测试,但使android密钥“消息”完全相同:


假设您从谷歌获得了成功的回复,如果您需要帮助查找问题,您应该发布处理消息的应用程序代码。我从android Samples和android Samples获得了应用程序代码,这对我来说非常有用。我为此奋斗了两天,现在它工作得很好。非常感谢。这个答案很有帮助