1、概述

android push集成了小米,华为,魅族,vivo和oppo五大厂家的push sdk,方便Android各项目集成push。

2、Push类图

3、Push时序图

4、使用姿势

  • 配置global.gradle和build.gradle

在project的build增加配置

allprojects {    repositories {        maven {url "http://developer.huawei.com/repo"}        maven{url 'https://raw.githubusercontent.com/fomin-zhu/repo/master'}    }}

在module的build增加配置

dependencies {  implementation 'com.fomin.push:push:1.0.0'}
  • 配置AndroidManifest
注意:appId如果是数字,请在前面加上"\ ",避免读取数据错误                                                            
  • Application初始化
override fun onCreate() {    if (!Systems.isInMainProcess(application)) return    super.onCreate()    pushCenter = PushFactory.init(application)}companion object {    fun pushCenter(): AbsPushCenter? {        return pushCenter    }    fun setPushCenter(pushCenter: AbsPushCenter) {        this.pushCenter = pushCenter    }}
  • 自定义BroadcastReceiver,类名和包路径固定,类名为PushReceiver,包路径$applicationId+".push.PushReceiver",需要兼容8.0系统
class PushReceiver : BasePushReceiver() {    /**     * 获取注册推送返回的token或regId     */    override fun onReceiveToken(context: Context?, msg: PushMsg?) {        Log.d(PushUtil.TAG, "call onReceiveToken(): context=[$context], message=[$msg]")    }    /**     * 获取给服务器发送命令的结果,结果封装在MiPushCommandMessage类中。     */    override fun onCommandResult(context: Context?, command: PushCommandMsg?) {        Log.d(PushUtil.TAG, "call onCommandResult(): context=[$context], message=[$command]")    }    /**     * 接收服务器推送的通知消息,用户点击后触发,消息封装在 MiPushMessage类中。     */    override fun onNotificationMessageClicked(context: Context?, msg: PushMsg?) {        Log.d(PushUtil.TAG, " call onNotificationMessageClicked(): context=[$context], miPushMessage=[$msg]")    }    override fun onReceivePassThroughMessage(context: Context?, msg: PushMsg?) {        Log.d(PushUtil.TAG, " call onReceivePassThroughMessage(): context=[$context], msg=[$msg]")    }    /**     * 接收服务器推送的通知消息,消息到达客户端时触发,还可以接受应用在前台时不弹出通知的通知消息,消息封装在 MiPushMessage类中。     * 在MIUI上,只有应用处于启动状态,或者自启动白名单中,才可以通过此方法接受到该消息。     */    override fun onNotificationMessageArrived(context: Context?, msg: PushMsg?) {        Log.d(PushUtil.TAG, " call onNotificationMessageArrived(): context=[$context], miPushMessage=[$msg]")    }}
  • 混淆
-keep class com.huawei.** {*;}-keep class com.huaying.seal.common.mipush.PushReceiver{*;}-dontwarn com.xiaomi.push.**-dontwarn com.vivo.push.**-keep class com.vivo.push.**{*; }-keep class com.meizu.cloud.**{*;}-keep class com.coloros.mcssdk.**{*;}

github资源:https://github.com/fomin-zhu/push

更多相关文章

  1. Android(安卓)中的MVC与数据流动
  2. android message机制
  3. Android消息通知
  4. android的消息处理机制(图+源码分析)——Looper,Handler,Message
  5. Android的消息处理机制
  6. Android消息机制的原理及源码解析
  7. 深入理解Android消息处理系统——Looper、Handler、Thread
  8. 深入理解Android消息处理系统——Looper、Handler、Thread
  9. 深入源码解析Android中的Handler,Message,MessageQueue,Looper

随机推荐

  1. NDK简单实例
  2. android 定制个性按钮 控件
  3. Head First Android(安卓)Development-笔
  4. Android(安卓)SVG图片解析Demo
  5. Android实现在列表List中显示半透明小窗
  6. [Android] Android使用序列化接口Parcela
  7. Android生成Market分享链接
  8. Android(安卓)进阶学习:事件分发机制完全
  9. Android(安卓)进阶之刁钻问题汇总
  10. Android(安卓)驱动跟系统开发 1. 一个简