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

GCM客户机(设备)是否可以直接向另一个GCM客户机发送消息而不必转到服务器

施学
2023-03-14

根据

http://developer.android.com/google/gcm/client.html

http://developer.android.com/google/gcm/server.html

必须实现的第三方应用程序服务器。此应用程序服务器通过所选的GCM连接服务器将数据发送到启用GCM的Android应用程序。

从上面来看,这意味着你不能直接从一个客户端向另一个客户端发送消息。

有人请确认一下。

共有1个答案

李宜然
2023-03-14

不需要任何第三方服务器,就可以将GCM消息直接从您的设备发送到Google服务器。只需运行一个异步任务,如以下示例所示:

  HttpPost httppost;
            try
            {
                httppost = new HttpPost("https://android.googleapis.com/gcm/send");
            }
            catch (IllegalArgumentException e)
            {
                return false;
            }
            httppost.setHeader("Authorization","key=xxxxxxxxxxxxxx");
            httppost.setHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
            postParams.add(new BasicNameValuePair("registration_id", "xxxxxxxxxxxxx"));
            postParams.add(new BasicNameValuePair("data.mode", "exampleContentOfYourMessage"));
            HttpResponse response;
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpEntity entity;
            try {
                httppost.setEntity(new UrlEncodedFormEntity(postParams, "utf-8"));
            }
            catch (UnsupportedEncodingException e)
            {
                return false;
            }
            try {
                response = httpClient.execute(httppost);
            } catch (ClientProtocolException e) {
                return false;
            } catch (IOException e) {
                return false;
            }
            entity = response.getEntity();
            if (entity != null && response.getStatusLine().getStatusCode() == 200)
            {
                return true;
            }
            else
            {
                Log.e("Tag","No Connection");
                return false;
            }

但我不知道如何向多个注册ID发送GCM消息:(

你好,马尔特

 类似资料:
  • 我正在用java开发一个ServerSocket,我想知道,在客户端连接时,是否有可能将客户端/套接字发送到另一个ServerSocket。例如,一个客户端连接到123.41.67.817(只是一个随机IP),在连接时,客户端被直接发送到例如124.51.85.147(另一个随机IP),当然还有一个端口。所以一个会发生什么的小地图。 服务器套接字(侦听连接)< br> 客户端- 这有可能吗?抱歉问

  • 我有一个包含用户名数据库的服务器。我还有一个Android应用程序,用户可以在服务器数据库中注册自己的用户名,也可以在服务器的GCM部分注册设备。 我目前正在服务器代码中使用GCM演示,它将多播一个推送通知到每个注册的设备。但是,我希望它能够将推送通知发送给某些用户,而不是每个注册的GCM设备。 我的第一个想法是将数据库中的每个用户与其GCM注册表关联起来。这样行吗?我读过一些关于regID更改或

  • 问题内容: 所以现在,我正在制作一个基于客户端服务器应用程序的多线程。在服务器端,我为接受的每个连接创建了一个线程。 在线程类中,我创建了一种将命令发送到客户端的方法。我只想要的是如何将参数发送到所有正在运行的客户端?为简单起见,我只想使此服务器向所有连接的客户端发送消息。 我已经阅读了这篇文章,并从此链接中找到方法。但是,当我尝试使用自己的代码时,中没有类似的方法。 好的,这是我的服务器和线程示

  • 我正在运行一个Autobahn/Twisted python websocket服务器,但我在向客户机发送消息时遇到了问题。它似乎只在客户端向它发送消息时才向客户端发送消息。由于某种原因,如果我想将消息强制输出到已连接的客户端,那么消息就会卡在队列中,直到任何客户端向我发送消息。此时,所有排队的消息都发送到所有客户端。 我能够在python Autobahn/Twisted websocket服务

  • 编辑2:我切换到,并用包装客户端工厂,这样设备就可以很好地到达后端。但是当后端发回一些东西时,我会得到错误的出站套接字,客户机套接字死亡。我认为这是因为后端没有正确路由消息所必需的头。如何捕获此信息?我的配置类如下:

  • 我正在使用mosquitto MQTT代理。此外,我有多个(目前为10个,但数量还会增加)客户机,它们定期将一些传感器数据发布到主题。这些客户机在技术上是相同的,但确实有一个唯一的标识符(序列号)。 我还有一个订阅主题的客户机,以便接收发布的消息并将传感器值持久化到数据库中。我当然需要知道哪个传感器(即客户端)发送了一个特定的值。 作为一种解决方案,可以在每个发布的消息的有效负载中附加一些传感器I