java中的Android GCM推送通知服务器端
Posted
技术标签:
【中文标题】java中的Android GCM推送通知服务器端【英文标题】:Android GCM Push Notification server side in java 【发布时间】:2014-08-26 19:23:47 【问题描述】:我有几个关于 GCM 的问题。
-
在官方页面for GCM,在Getting Started下,写着
Decide which Google-provided GCM connection server you want to use— HTTP or XMPP (CCS).
现在我在实践中明白这两者之间的区别,但是当他说DECIDE which one to choose时,我不确定他是什么期待我吗?对于这两者,我需要做些不同的事情吗?
我已经为 GCM 准备好了 android 应用程序。对于服务器部分,我不确定我应该做什么。我可以向https://android.googleapis.com/gcm/send
发出 POST 请求并传递参数吗?我可以为此使用 HTTPClient,对吗?有什么特别的吗?
另外,我在步骤 2 中必须做的服务器。它不一定是服务器,对吧?它可以是任何独立的 java 代码,我可以运行它,对 gcm 进行 POST?仅用于测试目的。
【问题讨论】:
要做推送通知,你只需要Java代码,这里是[***.com/a/21853810/952511][1] [1]:***.com/a/21853810/952511 【参考方案1】:是的,http 和 ccs 服务器之间存在很大差异。前者涉及简单的http请求。后者需要xmpp协议实现。
是的,如果您采用 gcm http 方法,任何提交 http 请求的代码都应该可以工作。
出于测试目的,您不需要服务器。任何提交http请求的代码都可以。但是,您必须将设备注册 ID 传递给您的服务器代码才能发送 GCM 消息。
【讨论】:
是的,我知道 http 和 ccs 使用不同的协议。但是说,在我的开发人员控制台上,我有一个项目Test Project
。现在,如果我使用 HTTP 向它发送消息,那么它将表现为 HTTP,如果我使用 XMPP,那么它将表现为 CCS?是对的吗?如何使用它取决于我自己,我会相应地从云端获取行为,对吗?
@kraken 这几乎是正确的。要使用 ccs,您必须额外填写一个表格,将您的 API 项目列入白名单以供 GCM ccs 使用。【参考方案2】:
2 - 基本上就是这样,这是我的服务器代码,它是我服务器中的一个 php 文件
public function send_push()
$message = "your message";
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => array("GCM_REGISTRATION"),
'data' => array( "message" => $message ),
);
$headers = array(
'Authorization: key=YOUR_API_KEY',
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
echo $result;
GCM_REGISTRATION 是您第一次运行应用程序以在 GCM 中注册后获得的哈希值。如果一切正常,你可以在 logcat 中看到这个
api_key 是您在创建应用时获得的哈希值(您可能在文档中看到过)
3 - 我相信它不需要是服务器,因为它实际上会将消息发送到 Google 服务器,然后再将其传递到您的应用程序
【讨论】:
以上是关于java中的Android GCM推送通知服务器端的主要内容,如果未能解决你的问题,请参考以下文章
Android GCM Java 服务器 - 没有消息数据的推送通知
如何在基于 Java 的应用服务器上使用 GCM 向 iOS 设备发送推送通知