记录一次在 app 集成第三方推送的过程,总流程跟着 mPaaS 官方文档和各个推送厂商的官方文档进行就可以,主要记录自己接入的过程中忽略的一些点,导致的开发过程的滞慢。因为 mPaaS 已经集成了自建渠道的推送、华为推送和小米推送(OPPO 和 VIVO 需要另外集成 SDK),所以整个集成的过程还是比较友好的,不过因为第一次集成还是稍微花了一些时间,也有一些比较容易忽略的点,所以做一次完整的记录。
不得不吐槽一下国内安卓手机推送的环境对开发者真不友好,为了保证到达率要集成好几家推送,去年看到消息说国内也要搞一个推送联盟的,以后就可以像国外的手机一样用统一的服务器进行推送了,但是后面就没啥声音了。
Let's get it.
1、按照 mPaas 官方文档打开”消息推送“的组件,并在 AndroidManifest.xml 里进行相关配置
这里要注意的点就是小米推送的接入有两个权限的配置
<!--由于涉及到签名,权限放在 Portal 中-->
<permission
android:name="${appcationId}.permission.MIPUSH_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="${appcationId}.permission.MIPUSH_RECEIVE"/>
2、由于项目是采用 bundle + portal 的组件化接入方式,接收推送消息的 Service 类是在 Bundle 中的,在 portal 中配置该 Service 时需要注意类路径依旧保持该 Service 在 Bundle 中的路径。
<!--消息推送 start-->
<service android:name="${bundle 的包名}.service.PushMsgService"
android:exported="false" >
<intent-filter>
<!--MESSAGE_RECEIVED 表示处理接收到的消息-->
<action android:name="${portal 的包名}.push.action.MESSAGE_RECEIVED" />
<!--REGISTRATION_ID 表示处理获取到的设备标识-->
<action android:name="${portal 的包名}.push.action.REGISTRATION_ID" />
<category android:name="${portal 的包名}" />
</intent-filter>
</service>
3、 mPaaS 控制台渠道配置,这一步注意不要配置错就好了
4、注册好开发者账号,按照推送厂商的官方文档进行操作。(这里要注意的就是新建完应用之后,要开启 Push 服务)
华为的我同时也在 portal 的 app 根目录下配置了 agconnect-services.json 文件和在 build.gradle 文件中配置 华为的 maven 地址