今天在网上搜索推送问题,无意间看到极光征文的活动,使用极光也有一年多的时间了,早就想写点东西做个总结,但是因为太懒一直没有动笔,现在还有奖品拿,就趁这个机会写一写吧。因为一直在做 Android 开发,这里只写 Android 的情况。
##选择
♤♤ 刚开始接触极光是因为公司的 App 要加推送功能,主要是推送图文网页类消息。需求就是把网页推送给指定群组的用户,用户点击后跳转到网页详情。

♤♤ 拿到需求后就开始查资料,知道了实现推送的两种方式:客户端每隔一段时间去服务器拉数据(pull )和服务器在有新数据的时候把数据推送给客户端(push )。分别有几种解决方案,比如C2DM云端推送、MQTT协议、RSMB、XMPP、使用第三方平台、自己搭建推送平台等。对每种解决方案都研究了一下,考虑到能否在国内使用,送达率,CPU资源,消耗电量,消耗流量,服务器成本,学习成本,最终决定使用第三方推送,不仅集成简单,能快速实现功能,成本低,方便维护,而且能保证送达率。ps:具体每种方案的实现和利弊,这里给出了关键词,网上有很多介绍的文章了,就不细说了。

♤♤ 第三方推送有极光、友盟、小米、华为、个推、信鸽、百度等,这么多平台真是眼花缭乱,那么该选哪个平台呢?

  • 百度升级不兼容旧版本,有问题找不到人问,pass掉。
  • 个推、信鸽在网上查了一下,送达率不是很高,也pass掉。
  • 友盟试用了下,用测试帐号能推送成功,公司帐号就不能推送,查了各种文档没找到原因,过两天自己好了,有点无语,也暂时先放弃。
  • 然后就是极光,真的要给极光点 32 个赞,按照官方文档集成出乎意料的很顺利,有问题客服也会及时解答,送达率能保证,后台管理功能清晰,文档全面。
  • 小米、华为因为在自家手机上会作为系统级服务,不会被杀死,所以最终选择的是极光+小米的方式。
    ##集成
    ♤♤ 选好了平台,接下来就是曲折的集(cai)成(keng)的过程了。

♤♤ 因为要推送的消息有多个字段,并且要自定义通知栏,所以需要使用自定义消息。自定义消息客户端只接收数据,不展示,需要自己写 BroadcastReceiver 接收处理数据。极光支持设置别名和标签,我们的应用要推送给不同群组的用户,使用了别名和标签,每个用户只能有一个别名,但是可以有多个标签。这部分集成很顺利,基本功能算是完成了,啦啦啦~

♤♤ 测试的时候发现进程被系统杀死后,就收不到推送消息了,查看了极光社区的问题,是这样解释的

android原生系统,没有root,用home键杀进程等其他系统自带的停止方式,都可以自启动,一般10s内恢复。
但如果是强行停止就只能用户自己手动开启应用
如果是miui等第三方应用,杀了进程默认无法自启动
如果是root过的原生系统,杀了进程也是没有办法自启动的,这个时候推送是收不到的

♤♤ 极光的自启动和进程间相互拉起还是不错的。

♤♤ 有的手机收不到通知,看了官方文档才知道是因为系统限制,需要用户手动开启自启动、 通知栏设置。其他的类似找不到 so 文件、目标数不对、突然收不到推送等问题,一步一步走来,简直就是一部踩坑血泪史,好在有文档和社区,问题都被一个一个的解决了。

##技术以外

♤♤ 做推送当然是想提高用户参与度,是运营的一大手段,但是怎么保证既留住了用户,又不让用户讨厌呢?个人经验来说,就是对不同群组的用户,推送不同的内容,要有相关度,在不同的时间推送(极光支持定时推送哦)。同时对通知栏、提醒声音自定义,跟自己的品牌形象保持一致。总之,越站在用户的角度考虑问题,越能留住用户。

♤♤ 使用极光推送的过程,学到了很多知识,也看到了极光的成长和壮大,极光是很用心的在做产品,新的一年,大家继续努力吧!路漫漫其修远兮,吾将上下而求索,共勉~