通过java发送推送通知GCM [关闭]
Posted
技术标签:
【中文标题】通过java发送推送通知GCM [关闭]【英文标题】:Send push notification GCM by java [closed] 【发布时间】:2014-02-18 12:00:32 【问题描述】:我已配置客户端 android Google Cloud Messaging (GCM) 以接收推送通知,但我无法在 java 中配置服务器以向设备发送通知。我怎么可能?
【问题讨论】:
您需要在互联网的某处配置服务器,例如使用 Google App Engine 来完成服务器端工作。 是的,我有一台使用套接字连接到设备的服务器,但我无法从另一台服务器向 GCM 服务器发送通知。 如果您已经有服务器,请发布不起作用的代码,我们会尽力为您修复。你的问题太宽泛了——我们需要先看看你尝试做什么。 如何使用 Google Cloud Messaging (GCM) 注册我的 Android 设备。我搜索了一整天,没有找到任何东西。请帮帮我 【参考方案1】:您可以使用gcm-server.jar,其中包含用于 GCM 消息传递的辅助方法。
要获取此 jar,您可以通过 Android SDK Manager 安装 "[Deprecated]Google Cloud Messaging for Android Library"。不要让已弃用的名称使您感到困惑。只有客户端部分被弃用,而不是服务器端。
安装后您可以在"ADT_SDKROOT\sdk\extras\google\gcm"
找到它。示例文件夹包含一个非常容易理解的演示服务器。
发送 GCM 消息只涉及几行代码:
final String GCM_API_KEY = "yourKey";
final int retries = 3;
final String notificationToken = "deviceNotificationToken";
Sender sender = new Sender(GCM_API_KEY);
Message msg = new Message.Builder().build();
try
Result result = sender.send(msg, notificationToken, retries);
if (StringUtils.isEmpty(result.getErrorCodeName()))
logger.debug("GCM Notification is sent successfully");
return true;
logger.error("Error occurred while sending push notification :" + result.getErrorCodeName());
catch (InvalidRequestException e)
logger.error("Invalid Request", e);
catch (IOException e)
logger.error("IO Exception", e);
return false;
【讨论】:
成功了。谢谢! 如果有效,您应该考虑接受答案。它对其他人有用:) 这是我一直在寻找的,谢谢你节省了我的时间。 :) 您好,我使用 Eclipse 进行了尝试,但出现此错误。知道如何解决这个问题吗?Exception in thread “main” java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException at NotificationSenderClass.main(NotificationSenderClass.java:16) Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306)...
我下载了 gcm.server.jar 文件并将其添加为库。提前致谢!【参考方案2】:
对于 """test""" 创建 java 控制台应用程序,添加 gcm jar 文件。
try
Sender sender = new Sender("<senderId>");
ArrayList<String> devicesList = new ArrayList<String>();
devicesList.add(<deviceId>);
String data = "<data>";
Message message = new Message.Builder()
.collapseKey("1")
.timeToLive(3)
.delayWhileIdle(true)
.addData("message",
data)
.build();
MulticastResult result = sender.send(message, devicesList, 1);
sender.send(message, devicesList, 1);
System.out.println(result.toString());
if (result.getResults() != null)
int canonicalRegId = result.getCanonicalIds();
if (canonicalRegId != 0)
else
int error = result.getFailure();
System.out.println(error);
【讨论】:
以上是关于通过java发送推送通知GCM [关闭]的主要内容,如果未能解决你的问题,请参考以下文章