2017 年 3 月 3 日
「极光」跟我的渊源真的是极深的,说到极光,不得不追溯到 2017 年 3 月 3 日,当时正做毕设项目趣闻。基本的预期功能已经实现了,开始考虑集成推送功能,鉴于水平和时间的约束,决定还是集成第三方推送最为保险。
然后百度了一下「第三方推送」,映入眼帘的便是「极光推送」,毫不犹豫的选择了它。在集成过程中也是比较顺利,在收到第一条推送后,喜悦的心情无以言表,不得不说大平台就是强。
2017 年 3 月 7 日
3 月 7 日,找到了第一份实习工作(毕业后也在这里转了正),坐标「南京」。入职不久,老大开始让我接手公司项目中的推送模块。然后我把公司推送的逻辑大致看了一下,无论是设置 tag
、或者是处理通知栏点击事件处理、还是自定义消息推送,对于刚入职的我是相当的复杂。毕竟在之前集成的毕设项目中,逻辑处理很少,只是简单的收到通知、点击并打开应用...
逻辑整理的差不多,开始了主要的任务--升级到新版的极光推送。
当我看到项目极光当前的版本,硬是被吓一跳。
当前版本我记得当时极光已经到 3.0.0+
的版本了,看来升级果断是有必要的!还有一点,我们公司是「极光」的 VIP,在原来推送的基础上,多了一项非常强大的功能!集成产商的推送(小米、华为和魅族)。
这意味着,如果在「小米、华为和魅族」的大部分的设备上,推送不再走极光的通道,而是走设备的产商通道。
什么意思呢?就拿公司老版本的项目来说,不仅集成了极光推送还集成了小米推送,不仅服务端需要推送两份推送,就连客户端自己都要对设备的类型进行判断,如果是「小米」设备就调用「小米」的接口。那如果集成了产商推送,就不需要此操作,你只需提供应用的 APPID
等其他配置信息即可,华为和魅族同样!
那么走产商通道又意味着什么呢?有集成过推送的小伙伴应该知道,推送能准确到达在于一个长连接,假如应用的进程被杀死,推送也便收不到。假如集成了产商的推送,即便进程被杀死,推送还是可以正常收到的,不过仅限于基本的推送,不包括自定义推送。
这个升级的过程也是相当的坎坷,我记得这部分的功能也是「极光」的测试功能,正好我们集成过来一并测试...不过还有有一位热心的小姐姐,习惯称之为「大侠」!这个称号是当时她的昵称,一直都这么叫过来的。每次遇到问题都能不厌其烦的为我解惑。
其中让我印象最为深刻的,是那天公司项目已经到了发版周期的最后两天,在华为的设备上推送没有收到。这可把我急的,第一时间就是找「大侠」帮忙,可能因为我在 QQ 上表达的不是很清楚,小姐姐看起来比我 还着急,直接让我跟她通电话讨论一下具体的原因,这让我意想不到。还好最后是解决了问题,在此说声 谢谢。
2017年 9月19日
9月 19 日,工作半年了,打算和大神同事一起维护一个开源项目,于是就有了 WeaponApp 的诞生,目前也快到 600 的赞了。
WeaponApp当然,推送的功能也是少不了的,由于有了前面的经验,集成起来也是相当顺手,不过因为是个人项目就没有考虑,后来同事自学了服务端,顺便也把服务端的极光推送集成了,感兴趣的话可以把项目 clone
下来。
在这个项目中初次尝试了集成「极光IM」,官方的接口也是很详细,并且还有自己的用户系统,登录和注册不需要自己实现了,不过目前的用户还是很少...
所有用户2017年 10 月 26 日
10 月 26 日,咱们公司另一交易项目「原油」开始进行大版本的升级,基本上属于重头做起。不用多说,推送的部分还是由我负责,鉴于又是「极光」的 VIP,直接将「贵金属」项目的推送部分挪过来,去除不需要的部分,修改一些基础的配置,最后也是顺利的完成了。
不知不觉中,推送功能已经在 4 个项目中集成了:
个人项目公司的就不方便列出来了,加在一块也有数十万的用户了(绝大部分是公司)...整体的过程还是很顺利的,无论是集成的步骤,还是后续的服务都很完美,这可能就是「极光」做的那么大的原因吧。
推送一览赘述
说完「极光」与我的渊源,接下来就大概说一下集成的过程。
官网已经有详细的集成介绍,我就不赘述了。官网集成,只是总结一下集成的步骤,一共三步:
- 添加依赖
手动集成,需要拷贝相应的so
文件到制定的目录
自动导入,Android Studio
直接添加依赖 - 添加配置文件
拷贝官网的AndroidManifest
数据到项目app module
下的AndroidManifest
中,并更换对应的包名和APPID
。
调用「极光」接口进行初始化 - 添加接收器
创建自定义Receiver
用于处理推送的消息。
一般这样集成就可以正常收到推送了。如果遇到问题也别慌,冷静下来。从我的经验来看,最好在每个关键的地方打上日志,方便运行时候查看和后面遇到问题方便定位。还有就是日志的 TAG
,最好和极光的日志过滤规则保持一致,比如 JPush
。
当你有下面的日志输出,就证明已经集成成功了!
[JPushInterface] action:init
.......
[PushService] Login succeed!
成功的日志只有这一个,错误的情况就各种各样了,可以对照之前的日志进行分析,比如:
初始化失败很有可能是因为 so 文件加载失败...
还有好多东西,我后续在添加吧,感兴趣的小伙伴可以很我交流交流,希望能帮到你!
「本文系极光征文 | 写写文章就能赢 Filco,岂不美滋滋的参赛文章」
网友评论