谷歌推送Tips

1,652 阅读4分钟

一、注册配置

1、注册谷歌云

首先需要一个谷歌账号,进入谷歌云控制台创建一个项目(可以直接Google搜索「Google Cloud Platform」找到谷歌云入口自行创建)

image.png

image.png

2、注册Firebase项目

进入Firebase控制台,创建应用:Firebase console (google.com)(可以直接Google搜索「Firebase Console」找到入口)

image.png

创建后第一步要关联谷歌云,选择一个已经创建的谷歌云项目

image.png

然后一直下一步直到创建即可,第三步的「Google Analytics」建议打开,会有很多用处。

3、创建Firebase应用

一个Firebase项目里可以创建多个应用,这里已经有4个了 image.png 点击加号,选择创建Android应用,输入包名和名称,SHA-1可以不用输入 (这个示例只集成推送,登录功能也可以单独按照谷歌的文档集成,ps:输入SHA-1后不好删项目,我是试过删除的[暗中观察])

image.png

一直下一步创建即可,下载的配置文件放到app目录下

4、配置文件「google-services.json」

上面的配置文件还可以在这里下载

image.png

项目设置里的各种配置都是针对当前项目下所有应用的,同理,「google-services.json」文件中会包含当前项目下的所有App的配置信息

5、下载服务账号密钥

服务账号是存在于谷歌云中的,它可以用来访问谷歌云的各种API,推送、支付等都需要用到,这里的密钥生成后只能下载一次

image.png

虽然只能下载一次,但是可以多次生成,不过每次生成的都不一样,不要手贱一直点,你请求的时候谷歌云会把所有生成过的密钥都进行校验

可以到谷歌云里看一下:

image.png

点进去可以看到:

image.png

这是一个失败的例子,其实一个密钥就够了,不用重复创建。这个密钥将用于后台访问谷歌云API,进行发送推送消息。 ps: 在同一个Firebase项目下的App可以共用这个秘钥,就像上面同一个Firebase下有4个应用,可以使用同一个

(一个开发者有一个 Paly Console,可以注册多个应用,但是只能关联 Google Cloud Console 中的一个项目,建议这些应用使用同一个即可,同时建议同一个开发者的应用使用同一个 Firebase Console 的项目)

image.png

二、集成

1、整体逻辑

image.png

客户端通过SDK获取谷歌标记设备的Token,上传服务端,服务端通过Token来对指定设备发送推送

2、服务端

文档:构建应用服务器发送请求  |  Firebase Cloud Messaging (google.com)

后台基础需求:一个接口一个表。只要知道用户的Token,就可以对指定用户发推送了

可以了解下多种发送方式:指定设备、多台设备、指定主题等

3、Android端

文档:设置 Firebase Cloud Messaging 客户端应用 (Android) (google.com)

1、应用启动的时候使用 Firebase SDK 获取Token,成功获取后上传后端

2、在LaunchActivity的onCreate中获取intent的数据,用户点击推送消息后会从这里携带内容进入App

val msg = intent.extras?.getString("payload") // payload是后台自行定义的

3、实现「FirebaseMessagingService」,有多个方法可以重写

  • onMessageReceived:只有在App处于前台时会被调用,返回信息是一个Map

  • onNewToken:获取到新的Token的时候会回调这个方法,不过也可以在请求Token的时候设置回调,请求Token方法还可以传入一个回调

  • handleIntent:敲黑板!这个方法文档上没有说明,只要有推送消息,这个方法100%会被调用

    谷歌手机有一直存在于手机后台的Service,当收到推送消息时

    • 如果App已被杀死,此时会走Service的启动流程,创建Application,再调用「FirebaseMessagingService」的「handleIntent」

    • 如果App存在于前台,会先调用「handleIntent」再调用「onMessageReceived」

    • 如果App存在于后台,会只调用「handleIntent」

我们可以在「handleIntent」加上日志拉取方法,同时配合「data messages」类型的推送配合完成日志拉取。

ps: 两种消息类型:FCM 消息简介  |  Firebase Cloud Messaging (google.com)

What are the two types of messages in Firebase Cloud Messaging?

With FCM, developers can send two types of messages to users: notifications messages and data messages. Notification messages are displayed on the user's device by FCM on behalf of the application. Data messages are directly processed by the application, which is responsible for delivering the message to the user.

其他的可以自行看源码说明,按需实现:

image.png

4、记得配置AndroidManifest.xml,仔细阅读接入文档,配置Service和meta-data,可选的也配置上。