准备工作
翻墙
先翻墙,翻不了墙一切都白搭……
Google账号
- 申请Google账号
- 进入Google开发管理台
- 创建工程(Google管理台上的Project)
- 开启Google Cloud Messaging API。
Demo工程
参考google官方指导文档,在google中搜索GCM,或者直接点击此处打开。本文均以Android为例,打开页面后,点击左上方的”TRY IT ON ANDROID”按钮,进入针对安卓的指导页。以下步骤官方指导写的比较详细的,本文就不赘述,一笔带过,有需要注意的会补充。
- 下载Android示例工程
下载下来是个压缩包,GCM的工程目录为google-services-master/android/gcm,简单介绍下各个类的作用:- MyGcmListenerService.java
GCM接收监听服务类,接收GCM发过来的通知消息,并显示到手机状态栏中。
对应的AndroidManifest.xml配置如下:- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
GcmReceiver接收,然后发送给GcmListenerService,我们在GcmListenerServcie的实现类中处理收到的gcm消息。Google官方对GcmReceiver的解释(原文链接):WakefulBroadcastReceiver that receives GCM messages and delivers them to an application-specific GcmListenerService subclass.如何将通知消息展示到状态栏:- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- RegistrationIntentService.java
向GCM服务器进行设备注册,获取注册token,该token会作为通知消息接收设备的标识,该类中还进行了topics的订购。 - MyInstanceIDListenerService.java
接收token更新通知,收到通知后会重新通过RegistrationIntentService获取新的token。 - GcmSender.java
推送消息发送类,通过该类向GCM发送HTTP消息,GCM再推送给终端设备。该类并不是必需的,下文也提到了,可以通过Postman等工具直接发送HTTP消息。
- MyGcmListenerService.java
- 下载配置文件。
下载过程中会给出API Key和Sender ID。(没记住也没关系,管理台上也可以查到,分别对应API Key和Project number) - 将配置文件放入工程注意,工程下载好后,里面默认代码使用的API Key以及Sender ID需要修改。API Key: GcmSender.java(模拟服务器向Google发送推送消息使用,后面可以不用main函数,直接用浏览器插件发消息的方式,更方便点。)Sender ID:RegistrationIntentService.java(代码默认使用的是”R.string.gcm_defaultSenderId”)。
- 安装并运行示例App
工程打开时会向Google注册,并获取注册Token,logcat日志中会打出来。后面发送消息时以获取到的token作为客户端设备标识。
- 1
- 2
- 1
- 2
发送通知消息
下载下来的工程中GcmSender.java这个类就是专门发消息的,Google的指导中有给出调用其Main函数的命令,本文推荐直接通过浏览器插件或工具发送(反正就是个HTTPS的消息,用什么发都一样,对吧)。
推荐”Postman”,通过Chrome网上应用店安装,有独立的应用版本。
推荐”Postman”,通过Chrome网上应用店安装,有独立的应用版本。
消息内容如下:
其中消息头中的key为API Key(Google管理台上可以查),token为上文第四步中提到的注册token。
其中消息头中的key为API Key(Google管理台上可以查),token为上文第四步中提到的注册token。
- 消息1:发给某一个topic,to为topic的名称(可以实现群发)。
参考链接:https://developers.google.com/cloud-messaging/topic-messaging
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 消息2:指定发送给一个设备,to即上文提到的注册token。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 消息3:发送给多个设备,token1、token2即上文提到的注册token。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9