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

使用GCM从服务器向应用程序发送消息

鄢禄
2023-03-14

我尝试从http://developer.android.com/guide/google/gcm/gs.html我可以将regid发送到servlet,但无法从中获取消息。

Servlet:

if("send".equals(id))
        {
            deviceHolder.put(did, reGid);
            reGid = deviceHolder.get(did);
            if(reGid== null || "".equals(reGid)){
                System.out.println("device is not registered "+did);
            }else{
                Sender sender = new Sender(myApiKey);
                Message message = new Message.Builder()
                .collapseKey("1")
                .timeToLive(3)
                .delayWhileIdle(true)
                .addData("message", "message is created at builder")
                .build();

                Result result = sender.send(message, reGid, 5);
                System.out.println("result of message is "+ result);
            }
        }

GCMinentService:

@Override
protected void onMessage(Context arg0, Intent arg1) {
Log.i(TAG, "new message= ");
Toast.makeText(getApplicationContext(), arg1.getStringExtra("message"),
Toast.LENGTH_SHORT).show();
}

控制台:

A?u 07, 2012 4:37:08 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [servCloud] in context with path [/servletCloud]   threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: com.google.android.gcm.server.Sender
at   org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at servCloud.doGet(servCloud.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

A?u 07, 2012 4:40:37 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/servletCloud] has started
A?u 07, 2012 4:40:38 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/servletCloud] is completed

我怎样才能解决这个问题?

共有1个答案

谭昱
2023-03-14

您的servlet类路径应该包括GCM服务器API。确保您有gcm服务器。servlet war文件中WEB-INF/lib文件夹下的jar。

 类似资料:
  • 我们如何才能从android应用直接发送一个图像到whatsapp?我试着用 以上代码打开WhatsApp的发送窗口。有没有其他的方法,让图片将直接发送而不打开什么app窗口?

  • 问题内容: 对于我的一个应用程序,我想与WhatsApp联系人共享数据。我在StackOverflow上尝试了一些解决方案,但无法获得确切的解决方案。经过一些试验可以达到我的期望,因此在这里分享以供将来参考。 问题答案: 注意:文本需要进行URL编码。您可以使用Internet上的任何开源工具或使用iOS中的addPercentEncoding(withAllowedCharacters :)函数

  • 对于如何将一个< code>json对象从我的android应用程序发送到数据库,我有点不知所措 由于我是新手,我不太确定我出了什么问题,我已经从中提取了数据,并且我不知道如何将对象发布到我们的服务器。 任何建议将不胜感激

  • 问题内容: 我正在尝试创建一个可以从服务器向客户端发送消息的python应用程序。目前,我正在从这里使用此示例代码。这是一个聊天应用程序,并且运行良好。我试图修改该应用程序,并在服务器端python代码中添加了一个新功能,该功能将在客户端打印一条消息“ Dummy”,但似乎不起作用。 这是我的html代码: index.html 这是我的后端代码: web_app.py main.py 我可以在终

  • 问题内容: 我将实现类似于Facebook通知和此网站的内容(StackOverflow的通知会通知我们是否有人为我们的问题写评论/答案等)。请注意,用户将使用我的应用程序作为网站而不是移动应用程序。 我遇到以下获取结果的答案,但我需要推送结果而不是获取结果。 根据建议,我在实体类中创建了一个简单方法,并向其中添加了@PostPersist,但此方法不起作用,因此基于此答案,我添加了persist

  • 我不确定我遇到的问题是概念问题还是技术问题,因为配置错误。 目标是在应用程序容器中托管的Java EE应用程序(特别是WildFly)和独立运行的Java SE应用程序之间发送双向消息,都使用标准JMS协议和主题。我认为这应该是可能的,只要他们都使用相同的经纪人和相同的主题。 因此,我有一个外部 Artemis 实例作为消息代理运行,并在 Java EE 应用程序的单独 Bean 中成功设置了生产