GCM 给出空消息
Posted
技术标签:
【中文标题】GCM 给出空消息【英文标题】:GCM gives null message 【发布时间】:2013-07-26 11:50:54 【问题描述】:我正在尝试从服务器获取消息作为 android 中的推送通知。我能够访问服务器,但我从服务器收到空消息。我可以在没有消息的情况下在 android 中看到通知。 这是我来自服务器的代码,我从ANDROID HIVE 获得了 android 代码
public class GCMBroadcast
@POST
@Path("/getgcm")
public String getGcmData()
String str="success";
try
System.out.println("From CLient");
Sender sender = new Sender(
"AIzaSyBbfXkbCYWQdE5qyjJKwl-YLBX-F01ICug");
// add your own google api key in android menifest
// use this to send message with payload data
Message message = new Message.Builder()
.collapseKey("message")
.timeToLive(3)
.delayWhileIdle(true)
.addData("message", "Welcome to Push Notifications")
// you can get this message on client side app
.build();
System.out.println("message:"+message);
System.setProperty("http.proxyHost", "192.168.1.110");
// write you own proxy
System.setProperty("http.proxyPort", "8080");
// write you own proxy host
// Use this code to send notification message to a single device
Result result = sender
.send(
message,
"APA91bFEmQ53TKnJQXa0HbF9lXGTMEyRrp-6H9-_zZNBdFAUMsvXIG0rpvKcXn_6L5wBP77HskWw4svo6GLHZwfWdDf-yQCBAvIqp4fQF05cWqDtJ8mfNDnAQ8qdXByaEqwDmK3aQi0xIq7L3XGF1dSkbOOfBFIjlfDzlj4SG3z_SA-v3IUz_g4",
1);
System.out.println("Message Result: " + result.toString());
// Use this code to send notification message to multiple
// devices
/*ArrayList<String> devicesList = new ArrayList<String>();
// add your devices RegisterationID, one for each device
devicesList
.add("APA91bFEmQ53TKnJQXa0HbF9lXGTMEyRrp-6H9-_zZNBdFAUMsvXIG0rpvKcXn_6L5wBP77HskWw4svo6GLHZwfWdDf-yQCBAvIqp4fQF05cWqDtJ8mfNDnAQ8qdXByaEqwDmK3aQi0xIq7L3XGF1dSkbOOfBFIjlfDzlj4SG3z_SA-v3IUz_g4");
// Use this code for multicast messages
MulticastResult multicastResult = sender.send(message,
devicesList, 0);
sender.send(message, devicesList, 0);
System.out.println("Message Result: "
+ multicastResult.toString());
*/
catch (Exception e)
e.printStackTrace();
str="Failure";
return str;
我正在使用android hive example
【问题讨论】:
假设您从 Google 获得了成功响应,如果您需要帮助查找问题,则应发布处理消息的应用代码。 我从 this 和 android 示例中获得了应用代码 【参考方案1】:在您声称从中获取代码的链接中,消息是从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 message = new Message.Builder()
.collapseKey("message")
.timeToLive(3)
.delayWhileIdle(true)
.addData("message", "Welcome to Push Notifications")
这可以解释得到一个空消息。
当然,您可能更改了从该链接获得的客户端代码,但由于您没有发布您的客户端代码,我无法知道。
【讨论】:
太棒了它对我有用。我为此苦苦挣扎了 2 天,现在效果很好。非常感谢。 这个答案很有帮助【参考方案2】:您好,在演示项目中,您得到了 intent.getExtras().getString("price");价格在这里。当您使用 php 作为您的 php 管理员为您提供“名称”字段并使用该名称字段并获取消息时,我也解决了这个问题..
@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);
【讨论】:
【参考方案3】:参数和变量键必须匹配。
您通过此网页进行了测试,但使 android 键“消息”相同:
【讨论】:
以上是关于GCM 给出空消息的主要内容,如果未能解决你的问题,请参考以下文章
GCM - 当达到 100 条消息的限制时,来自 GCM 的特殊消息是啥样的?