项目中使用到推送的情景是一个非常普遍的功能点,也是常规项目中一个不可缺少的流程。提供第三方推送服务的渠道很多,最常用的有极光和友盟,这个看开发人员和产品的实际情况进行分析。因为原先项目中使用的极光推送,配置的版本比较低。新增的业务功能是需要在极光中添加厂商渠道和增加角标提醒功能,添加厂商渠道可以更高效的接受推送消息,特别是在app放置在后台的情况下。 角标功能也是常见的功能之一,今天就分享一下极光对接的一些知识点。
jcenter依赖
原先代码中使用极光采用的是manifest文件配置和添加jar包的方式进行处理,这样的处理显得很繁琐,要注意的细节也很多。随着极光官方文件的指示,新版本精简了这一部分操作。
1.小米
首先需要在build.gradle文件中配置jcenter依赖
在应用 module 的 gradle 中 dependencies 节点添加如下代码
注意: jpush和core的版本跟厂商的版本是相对应的
因为是厂商渠道,根据极光文档的介绍,消息是先由极光平台先推送的厂商平台,然后再由产商平台推送到客户端的,所以这个地方需要极光平台和厂商平台之间建立关联,这就需要开发者先在厂商平台上传app注册相关信息,注册之后会生成appid和appkey 这两个信息需要配置到gradle文件中
manifest文件中需要配置一个自定义的service进行intent数据传递的链接,自定义的service需要继承自JCommonService,如果没有实现这一步,极光在进行初始化的过程中core包就会提示报错,表示初始化失败。
同时还需要再manifest文件中配置receiver来进行消息接受和处理
注意:新版本的极光的消息类不再集成BroadcastReceiver,而是继承JPushMessageReceiver 其中不同之前通过intent的action来区分消息接受和消息点击开发等一些操作,而是通过不同的重载方法来实现
NotificationMessage包含了消息通知的一些相关字段 例如 title content,具体可以参考极光官方文档的说明。
CustomMessage类则是自定义消息包含的的相关字段,具体使用可根据业务需求进行处理。
最后需要在代码中配置混淆,这样等于小米渠道相关的对接就完成了。
2.华为
华为的配置跟小米的配置有些许不同,除了同样需要在gradle文件中的dependencies下配置依赖包之外,还需要一些其他的操作,首先在华为开发者平台中也需要上传app进行注册,之前的版本会获取一个HUAWEI_APPID,最新的版本则是会生成一个 agconnect-services.json的配置文件,将这个文件导入应用的 module 目录下。
build.gradle 中添加规则,以纳入 HMS 服务插件 和 华为 的 Maven 代码库,classpath'com.huawei.agconnect:agcp:x.x.x.xxx'的版本号是有区分的,代码中没有配置多渠道打包的前提下,只需要配置1.0及以上版本即可,如果配置了多渠道打包,则必须要1.2.1.301及以上,同时不同渠道下对应的agconnect-services.json 文件也需要分别放置在渠道的子目录下,防止对应错误。
应用 module 的 build.gradle 文件添加 apply plugin 代码行,以启用 gradle 插件
接着同样需要在manifest文件中配置service来接受hms的消息,注意hms服务必须要签名成功才能注册成功,无论是在代码中进行配置,还是在打包过程中进行配置签名,都需要跟当时华为平台注册时候的签名是一致,举例 测试环境和正式环境的签名是不一致的情况下,这种问题容易被忽视掉。
最后依然是代码混淆