结合自定义Notification优雅的实现消息透传

来源:互联网 发布:淘宝 延长收货 几天 编辑:程序博客网 时间:2024/06/16 22:16

1.总得先说两句

项目需求新增移动端消息推送,要求如下:

  • 消息透传
  • 指示灯闪烁
  • 根据消息级别改变通知音效
  • 自定义通知振动频率
  • 通知开关用户可控
  • 点击通知跳转对应页面

2.相关技术储备

推送:个推(透传消息)
通知:自定义Notification

2.1 先来创建个推账户吧

个推官网:http://www.getui.com/cn/index.html (Ps:个人账户和公司账户均可)

2.2 个推开发者中心

1.登记应用

登记应用

2.填写项目信息

填写项目信息

3.获取项目配置

项目配置

2.3 Studio快速集成个推SDK

1.添加Maven库地址(Project build.gradle文件)

添加maven仓库

2.添加依赖(Module build.gradle文件)

添加依赖

3.so库与参数配置(gradle.properties与 Module build.gradle)

添加配置

so库与配置

4.导入通知栏图标

下载官网的demo找到对应的res文件导入即可

5.配置自定义服务

该服务用于调用个推服务的生命周期,别忘了在AndroidManifest.xml中添加该Service

service

这里写图片描述

2.4 现在开始编写代码吧

1.首先在程序启动后初始化个推服务
PushManager.getInstance().initialize(context,DemoPushService.class);

2.创建GTIntentService类用于接收推送的消息,别忘了在AndroidManifest.xml中添加该Service

这里写图片描述

这里写图片描述

做完以上步骤你就可以在手机上收到服务器发来的消息啦,不过要想对服务器发来的数据进行解析并对通知进行个性修改还远远不足。

3.个推官方消息通知栏太low怎么办

由于个推透传消息不支持通知栏的相关修改,官方的又不足以满足项目需求,所以这里采用自定义Notification来代替。

3.1 怎么说都得先拿服务器传来的数据吧

在onReceiveMessageData()方法中有一个参数GTTransmitMessage,它是服务器发来的数据对象,对他进行解析获取想要的json数据。

通过mGTTransmitMessage.getPayload()方法拿到payload对象,他就是我们需要的json数据的字节码数组形式。

JSONObject obj = new JSONObject(new String(payload))将这个字节码数组转换为json串。对json进行解析获取你想要的数据。

3.2 数据都有了也是时候给用户展示了

这里写图片描述

做完以上所有步骤,你就可以在服务器发来消息时,个性化的提示用户,实现了上述所有需求。

4.最后的优化每个人都不一样了

个推是针对在线的clientId进行推送消息(离线的会在上线后收到有效时间内的消息)

本地sp存储用户的个性化设置,在程序开始运行时进行判断

重复调用个推的初始化与开启服务方法不会有副作用,api自身有相关判断

多端登陆要注意clientId的存储与销毁

原创粉丝点击