个推多厂商集成
2019-01-10 本文已影响11人
凌空御风
背景
我们都知道推送的重要性,但是在目前国内 Android 系统的大环境下,厂家的深度定制 ROM 对系统做了越来越严格的限制,想要在所有机型上做到推送进程永久保活是不可能实现的,并且保活也会使额外功耗增加。因此,为保证推送的到达率,我们引入个推的多厂商集成方式。当用户杀掉进程或者推送服务器无法连接到客户端时,使用手机厂商系统级推送提醒用户推送达到。
厂商推送的优势在于厂商系统上拥有稳定的系统级长连接,可以做到随时接受推送消息。
方式:优先使用个推的通道进行消息下发,只有在个推通道断连时选择厂商通道进行下发,个推会根据当前机型来决定启用何种推送服务(想考米、华为、魅族)。
集成步骤
- 找个推人员后台开通特殊机型配置权限,有华为、小米、魅族等厂商推送的配置项。
- 到各应用市场后台申请推送相关的key,配置到个推后台,使其生效。
- 集成个推多厂商sdk,推荐添加Maven库地址形式,简单方便。
- 服务器后台透传消息格式修改(目前服务器后台的消息格式都是透传格式)。
- 客户端加入Activity承接页,用于获取点击时的消息内容。
开发
多厂商集成需要客户端和服务器配合开发完成。
服务端
在透传模板升级上,增加intent参数,如下图:
image
其中component=包名/activity全路径,是点击厂商消息落地的activity页面,在这个页面获取相应的消息及处理消息点击相关逻辑。
客户端
因为厂商推送的消息是无感知的,即程序上无法知道消息已达、已显示等。客户端只能处理相应的点击事件,定义activity承接点击事件,获取相应的消息内容,处理消息逻辑。如下图:
其中getStringExtra获取服务器传入的参数,即透传的消息内容。然后和之前一样处理消息逻辑。
注意:如果接入了华为推送, 华为手机上被打开的 activity , AndroidManifest 中必须设置 android:exported="true", 否则无法启动你配置的activity。