Android 友盟集成华为,小米,魅族推送的基础实现与注意事项

2023-10-26

因为目前正处于实习阶段,所以公司安排了解一下华为,小米,魅族,友盟的推送,并将其集成在一个APP上。为此特地写一篇博客记录集成过程中需要注意的一些事项(如果想进行集成,建议还是先了解一下华为,小米,魅族它们自己厂商的推送服务及文档,毕竟集成还是需要使用到它们的基础知识,不然友盟集成文档你可能会有些地方看不明白)。因为安卓的开源的原因,很多厂商都自己定制了自己的系统,以至于安卓的碎片化特别严重。在开始集成前先了解一下厂商推送和第三方平台推送。

1.手机厂商推送

记住一个规则:手机操作系统是不会杀死属于自己品牌的推送服务。

1.手机厂商的推送服务在自家的手机上属于系统级别服务,这意味着系统不会杀死自己家的推送服务。
2.比如说,Android原生系统是不会杀死C2DM消息推送服务,MIUI系统是不会杀死小米的推送服务。

2.第三方平台推送

记住一个规则:推送系统会共享一条推送消息通道

1.假如你的APP接入了友盟推送,而其他APP也恰好接入了友盟推送。
2.有一天你的APP被杀死了,当这时用户启动了接入友盟的其他APP,那么推送系统也就会通过共享的推送通道顺便把你的消息送达到手机上,然后还可能把你的进程也唤醒(被“保活”了)。
3.第三方平台推送有个大的缺点就是由于Android系统的机制,后台推送 Service 会被各种主动的或是被动的行为给杀死,而服务一旦被杀死,意味着就接收不到推送消息,所以需要集成其他厂商推送,尽可能提高推送送达率。

下面就开始讲一下如何集成友盟推送。

一、准备工作:

1、友盟集成需要先实现友盟自己的推送服务,在友盟开发者平台注册一个开发者账号,然后按照友盟提供的接入文档实现友盟自己的推送服务,关于这个部分友盟的文档介绍的很清楚,按它的步骤应该不会遇到什么问题。接入后可以尝试一下是否可以实现推送效果。当然也可以继续实现文档介绍下面的高级功能集成。

二、友盟推送实现后,我们先集成小米的Push通道。官方提供的厂商通道集成文档。具体步骤和操作图片我就不发了,集成文档写的很详细,我讲一下操作时需要注意的一些东西。
1、在导入小米Push通道的时候,按照官方提供的依赖:
//小米Push通道
implementation 'com.umeng.umsdk:xiaomi-push:3.6.9'
implementation 'com.umeng.umsdk:xiaomi-umengaccs:1.0.9'

在添加的时候如果出现以下报错

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@allowBackup value=(true) from AndroidManifest.xml:18:9-35
  	is also present at [com.umeng.umsdk:xiaomi-umengaccs:1.0.9] AndroidManifest.xml:23:18-45 value=(false).
  	Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at AndroidManifest.xml:16:5-99:19 to override.

提示你清单合并失败,你只需要在在 Manifest.xml 的 application 标签下添加 tools:replace=“android:allowBackup”,再重新Sync Now 即可。或者你也可以不使用官方的依赖,添加如下依赖也行:

implementation 'com.umeng.sdk:push-xiaomi:1.0.0'
2、然后进行小米 Push 的初始化:

在Application类的onCreate方法中添加:

MiPushRegistar.register(final Context context, final String XIAOMI_ID, final String XIAOMI_KEY); // 小米开放平台申请到的 APPID 和 APPKEY

注册成功后会在tag:MiPushBroadcastReceiver下面打印log: onCommandResult is called. regid= xxxxxxxxxxxxxxxxxxxxxxx接收到小米消息则会打印log: onReceiveMessage,msg= xxxxxxxxxxxxxxxxxxxxxxx。

注意:
1、仅在小米MIUI设备上生效,如果你使用其他设备是无法看到该log的。
2、集成小米push的版本暂不支持多包名。
3、使用小米弹窗功能:

小米对后台进程做了诸多限制。若使用一键清理,应用的channel进程被清除,将接收不到推送。通过接入小米托管弹窗功能,可有效防止以上情况,增加推送消息的送达率。通知将由小米系统托管弹出,点击通知栏将跳转到指定的Activity。该Activity需继承自UmengNotifyClickActivity,同时实现父类的onMessage方法,对该方法的intent参数进一步解析即可,该方法异步调用,不阻塞主线程。(这是官方原话,可能我的理解能力有问题,理解为假入你点击了通知栏,是要跳转到 B,那么 B 需要继承自UmengNotifyClickActivity。后面经过我实践发现并非这样,同样跳转到 B ,你需要新建一个 A(activity),让A继承自UmengNotifyClickActivity,然后在 A 的onMessage方法里面处理intent参数,通过对参数的解析然后再跳转到 B。相当于 A(上面官方的Activity)是一个中转站接收intent,解析参数,根据参数内容再执行下步。下面我通过一个简单的例子有介绍)示例如下:

新建一个 MipushTestActivity 继承自 UmengNotifyClickActivity,然后在AndroidManifest.xml中配置该Activity,并设置launchMode=”singleTask”和exported=”true”:

<activity
      android:name=".MipushTestActivity"
      android
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 友盟集成华为,小米,魅族推送的基础实现与注意事项 的相关文章

  • Redis系列之客户端Redisson

    概述 官方推荐的客户端 支持Redis单实例 Redis哨兵 Redis Cluster Redis master slave等各种部署架构 GitHub 功能 分布式锁 分布式锁 使用Redisson提供的分布式锁的一个最常见场景 应用部
  • TCP/UDP/ARP/DNS/HTTP/帧的包头解析(保姆级分析)

    各种包的分析总结 TCP包的分析 包括使用wireshark进行抓包的分析 第一行 2个字节表示源端口 2个字节表示目的端口 0 65535 第二行 序列号 保证数据的顺序 第三行 确认序号 确保自己已经收到了 第四行 首部长度 数据偏移
  • Jdbc的简单封装

    由于操作Jdbc的代码重复度过高 所以抽取Jdbc工具类 JDBCUtils 目的 简化后期的操作 分析 1 抽取方法获取注册和连接对象 需求 不想传递参数 麻烦 还得保证工具类的通用性 解决方案 配置文件 通过定义一个jdbc prope
  • 虚拟机VMware 配置win7 安装

    1 首先需要下载一个VMware 2 接着下载一个Windows7的镜像系统 下载地址 MSDN 我告诉你 做一个安静的工具站 我的MSDN MSDN原版系统 MSDN镜像 MSDN ISO下载 3 这个好了之后就可以去这个网址下看安装教程
  • Python

    目录 1 以特殊格式处理连续增加的数字 排序 选项代码 2 正则表达式匹配 递归 字符串 示例 1 示例 2 示例 3 示例 4 示例 5 提示 选项代码 3 地下城游戏 数组 动态规划 选项代码 有调整 补充测试代码 1 以特殊格式处理连
  • MySQL创建用户与授权(转)

    一 创建用户 命令 CREATE USER username host IDENTIFIED BY password 说明 username 你将创建的用户名 host 指定该用户在哪个主机上可以登陆 如果是本地用户可用localhost
  • LINUX学习------Linux自动化运维——Docker容器

    Docker介绍 Docker 是一个开源的应用容器引擎 基于 Go 语言 并遵从 Apache2 0 协议开源 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级 可移植的容器中 然后发布到任何流行的 Linux 机器上 也可
  • AIX7.2系统安装openssh7.5

    目录 前言 备份当前版本的ssh文件 创建openssh安装包目录 进入目录解压 开始安装 前言 最开始对服务器做过一次安全检查 查出openssh的scp存在高危漏洞 于是就把包含scp服务的openssh client卸载了 后来再做安
  • VSCode 的 C/C++ 调试环境的 launch.json、 tasks.json 文件

    launch json Configuring tasks json for C C debugging author huihut repo https gist github com huihut 9548fe7e1084cf8e844
  • 在Bottle框架中返回静态文件和JSON对象的方法

    Bottle是一个轻量级的Python Web框架 提供了简单而灵活的方式来构建Web应用程序 在Bottle框架中 我们可以使用以下方法来返回静态文件和JSON对象 返回静态文件 要返回静态文件 我们可以使用static file函数 该
  • 交叉编译-18:解决arm-none-eabi-gcc交叉编译问题

    在项目中使用arm none eabi gcc交叉编译链编译程序时报错 checking host system type arm none eabi checking for a BSD compatible install usr bi
  • Docker进阶学习:其他命令以及扩展

    Docker Stack docker compose 单机部署项目 docker stack 集群部署 单机 docker compose up d wordpress yaml 集群 docker stack deploy wordpr
  • sqlserver 2012中实现字符串连接的新方法

    sqlserver 2012之前的版本 处理not null字符 DECLARE t1 varchar 10 a DECLARE t2 varchar 10 b DECLARE t3 varchar 10 c DECLARE t4 varc
  • 在线json解析工具 在线js解析加密混合工具

    https www sojson com json解析工具 js工具 https www jsjiami com tool
  • 风车IM即时通讯聊天系统源码_聊天APP_附APP_带安装教程

    风车IM即时通讯聊天系统源码 聊天APP 附APP 带安装教程 风车im 是一款独立服务器部署的即时通讯解决方案 可以帮助你快速拥有一套自己的移动社交 企业办公 多功能业务产品 独立部署 加密通道 牢牢掌握通讯信息 前端开发语言 VUE 安
  • kafka集群部署(最新版本kafka_2.13-3.1.0)

    集群环境 节点名 ip地址 OS版本 部署服务 broker信息 kafka01 192 168 96 10 CentOS Linux release 7 9 2009 Core jdk zookeeper kafka broker 0 k
  • Python字典及基本操作(超级详细)

    字典也是 Python 提供的一种常用的数据结构 它用于存放具有映射关系的数据 比如有份成绩表数据 语文 79 数学 80 英语 92 这组数据看上去像两个列表 但这两个列表的元素之间有一定的关联关系 如果单纯使用两个列表来保存这组数据 则
  • 一文教你懂得什么什么是EMC(电磁兼容)

    EMC 电磁兼容 是什么 EMC 电磁兼容 一直是电路设计和PCB设计中的难题 EMS是指设备在电磁环境中可以正常工作并且不对其它的设备造成干扰 EMS可以分为两部分 一个是EMI 电磁干扰 一个是EMS 电磁敏感度 EMI是设备本身对于其
  • qt for android存储文本文件到本地

    本博主要分享如何用qt for android 非qml形势存储文本文件到本地 本来以为很麻烦 后来发现和qt在window上使用是一样的 只是用手机存储excel应该要麻烦一些或者不行 但是我是用的是t xt文件 所以很容易就实现了这个功
  • 关于CATALINA_HOME 和 CATALINA_BASE 的区别

    官方文档 以下内容从官方复制出来的 目录和文件 这些是一些重要的tomcat目录 bin 启动 关闭和其他脚本 conf 配置文件和相关DTD 这里最重要的文件是server xml 它是容器的主要配置文件 logs 日志文件默认目录 we

随机推荐

  • 论文图片格式要求具体有哪些?

    经过多年发展 无论是论文发表还是各个院校 科研机构都已经形成了自身的科研系统 对论文格式都有了一些约定俗成的规矩 这也是我们在撰写论文时必须遵守的 尤其是刚接触论文写作的同学 经常只顾着研究论文的内容 对论文的格式问题根本没有重视 导致虽然
  • Android中切换到主线程执行的方法

    方法一 view post Runnable runnable 使用view对象 调用post方法即可在主线程中执行里边的代码 postDelayed是延时执行 也可以达到相同的效果 例如 textView post new Runnabl
  • chatgpt赋能Python-python_aorb

    Python a vs b 选择正确的Python版本 Python是一种流行的编程语言 广泛应用于数据分析 机器学习 Web开发和自动化等领域 在Python的发展历程中 出现了不同版本 其中最流行的是Python 2和Python 3
  • MySQL中int(M)和tinyint(M)数值类型中M值的意义

    MySQL中int M 和tinyint M 数值类型中M值的意义 mysql的基本数据类型里几个int如下 类型 大小 范围 有符号 范围 无符号 用途 TINYINT 1字节 128 127 0 255 小整数值 SMALLINT 2
  • rabbitMQ的生产与消费由Kettle实现

    文章目录 一 Kettle为什么可以读取流数据 二 rabbitMQ中启动MQTT插件并创建队列和路由键 三 Kettle实现rabbitMQ的生产与消费 Kettle是一款非常强大的ETL工具 不仅可以使用图形化界面 还可以处理各种数据
  • 解决网页无法复制粘贴(生活小妙招)

    事情缘由 今天在写学习通的作业的时候 发现答案不能复制粘贴 这种有答案 而无法复制粘贴的痛 谁又能懂呢 每当我们复制题目和粘贴答案的时候 就会跳出一个窗口 但是这种问题是难不倒一个学计算机的学生的 我们知道像这种复制粘贴的拦截都是通过JS脚
  • Seaborn 可视化

    Seaborn 可视化 1 简介 Seaborn是一个在Python中制作有吸引力和信息丰富的统计图形的库 它建立在matplotlib之上 并与PyData堆栈紧密集成 包括支持来自scipy和statsmodels的numpy和pand
  • 如何用计算机计算概率,概率计算器与阶乘方程

    我必须做一个代码 计算中奖彩票的概率 给定的数量可供选择的数量以及您必须选择多少 我必须在代码中使用阶乘方程 n k n k 代码本身工作正常 但公式不会编译 概率计算器与阶乘方程 This program calculates the p
  • 在局域网部署自己的Docker私有仓库

    本文参考自局域网部署Docker 从无到有创建自己的Docker私有仓库 内网用户由于无法链接互联网 所以无法像在线用户那样直接使用pull指令从Docker Hub上下载镜像 再查看了很多资料之后 发现可以使用文件操作在局域网上部署Doc
  • 手动搭建webase(3)——WeBASE管理平台

    1 依赖环境 Nginx安装 拉取代码 代码可以放在 data下面 执行命令 git clone https github com WeBankFinTech WeBASE Web git 若网络问题导致长时间无法下载 可尝试以下命令 gi
  • 从零开始搭建物联网平台(1):开篇

    前言 读大学的时候学的是物联网工程 大概是在大二的时候开始接触单片机 那时候特喜欢捣鼓那些东西 就觉得特别酷有极客范 还记得第一次做物联网相关的是一个远程控制的开关 第一次调通的时候真的很兴奋 啥也没干就挂在那用手机控制继电器听咔嗒咔哒的声
  • 在不同的维度中,态势感知存在着各自的规律和特点

    在不同的维度中 态势感知可以具有不同的规律和特点 以下是一些常见的维度和相关规律 时间维度 态势感知随时间的变化可以呈现出趋势和周期性 趋势是指态势感知在长期内的整体发展方向 可以是增长 下降或保持稳定 周期性是指态势感知在一定时间内重复出
  • CSS 学成网(二)

    学成网小圆点 小圆点模块 circle width 180px height 22px background color pink position absolute bottom 10px left 50 margin left 90px
  • 字节序网络序大小端问题

    基本概念 主机字节序 就是自己的主机内部 内存中数据的处理方式 可以分为两种 大端字节序 big endian 按照内存的增长方向 高位数据存储于低位内存中 小端字节序 little endian 按照内存的增长方向 高位数据存储于高位内存
  • Kafka复习计划 - Kafka基础知识以及集群参方案和参数

    Kafka复习计划 Kafka基础知识以及集群参方案和参数 前言 一 Kafka 相关术语 1 1 实现高可用的手段 1 2 Kafka的三层消息架构 1 3 Kafka如何持久化数据 1 4 常见问题 二 Kafka集群部署方案 2 1
  • 链码调试方法(在fabric-sample下)

    链码调试方法 在fabric sample下 启动网络 1 cd fabric samples chaincode docker devmode 1 docker compose f docker compose simple yaml u
  • YOLO v2(单尺度)

    文章目录 YOLO v2 单尺度 细粒度 fine grained 特征 锚框 Anchor 锚框 Anchor 和损失函数 Loss Anchor与YOLO YOLO v2 单尺度 能解决稠密物体的检测 但无法解决多尺度物体的检测 细粒度
  • 剑指 Offer 64. 求1+2+…+n----思路和心得分享

    对于这道题 我第一个反应就是高斯的算法 首位相加乘以一半的数量 奇数要加中间值 class Solution public int sumNums int n 求出中间值 int key n 2 设置结果 int sum 0 如果是奇数 加
  • 超全实用

    汽车领域 金融领域 由于篇幅有限 为了阅读体验本文只截取金融和汽车领域的数据存储期限汇总 其他领域如 通用 电商 工业 化妆品 医疗 游戏等行业要求在单独的汇总Excel中 可私信找我要 暗号 数据存储
  • Android 友盟集成华为,小米,魅族推送的基础实现与注意事项

    因为目前正处于实习阶段 所以公司安排了解一下华为 小米 魅族 友盟的推送 并将其集成在一个APP上 为此特地写一篇博客记录集成过程中需要注意的一些事项 如果想进行集成 建议还是先了解一下华为 小米 魅族它们自己厂商的推送服务及文档 毕竟集成