Google Cloud Messaging (Android 消息推送技术) (三)接口测试

来源:互联网 发布:grpc golang用法 编辑:程序博客网 时间:2024/04/29 04:01

如果用户使用第二章中的GCM Client,并用Project Number替换了SEND_ID。

用户的客户端理论上就可以正常工作了。

打开应用后就可以工作了。运行后界面为:


这时会显示设备注册的id,Logcat也会有相应的log打印出来。首先记录下这个registration Id。


测试GCM方法一:

        下载服务器端消息发送的测试代码。

         https://github.com/yuxiaohui78/Google_Cloud_Messaging/tree/master/GCMSendOnPC

然后将API KEY 和 registration Id替换为自己的,就可以发送消息。

这时手机可以收到服务器端推送过来的消息,如下图。



测试GCM方法二:

由于GCM第三方服务器端支持HTTP方式和 CCS (XMPP)方式与google 的服务器连接,如下面文章介绍。

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


我们可以使用HTTP的方式进行测试。HTTP的发送json格式可以参考:

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


具体测试方法:

使用http测试网页 https://www.hurl.it/


1.Post内容到:

      https://android.googleapis.com/gcm/send

2.Header中必须的两个参数:

Content-Type:application/jsonAuthorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA
这里的key就是我们第一章中提到的API KEY。

3.Post body格式为如下

{ "data": {    "score": "5x1",    "time": "15:10"  },  "registration_ids": ["这个值为Client注册时产生的registration id,如果消息希望多个设备都接收到,可以增加多个。"]}
data的内部可以使用json的结构,客户端可以接收到完整的结构。data可以传递的消息大小为4k。

对于手机客户端需要处理大量数据的应用,我们这个data可以只带一些通知类数据,告诉手机客户端,服务器有数据更新,需要到服务器端取数据。

对于即时通信类的Message或Email内容,我们可以直接使用消息来携带真实的数据。


Troubleshooting.

有时候发送消息的时候会返回下面的错误 MismatchSenderId 。

{"multicast_id": 9187880810849607000,"success": 0,"failure": 1,"canonical_ids": 0,"results": [{"error": "MismatchSenderId"}]}

主要原因是 Authorization 中的Api Key不正确,或者是registraion_ids有问题。

0 0