安卓app接入推送的较优解决方案(包括厂商通道、集成推送的使用分析)

    推送功能,是每一个app都会开发的功能,它可以很大程度的提高app的使用率和用户的保活率。但是问题来了,由于现在安卓系统越来越成熟,对某些权限的限制越来越大,而且各大厂商的定制系统对后台app监控做得也越来越好,如果自己实现一条后台线程来和后台服务器保持长连接,基本前台app退出不到几分钟就被杀死了,所以我选择通过接入第三方的推送SDK来实现推送功能的实现。
    在给公司产品接入推送时,我实现了两种方案,原因下面会解释,第一种方案就是自己集成了目前系统已经开放的厂商通道,到目前为止,已经开发有厂商通道的系统有小米、魅族(flyme)、vivo、oppo、华为(华为移动服务HMS),下面是各平台的入口:

小米开发者平台 

魅族开发者平台 注意:魅族推送分为两种:一种是自己的厂商推送;一种是集成推送;两者不同,使用时记住看清,两者的后台有点区别的

华为开发者联盟 注意:如果要接入华为推送,就必须把华为整一个移动服务框架都要集成进去,这个有点坑,而且华为推送的后台并不支持全量推送,所以在开发时,还必须自己收集注册华为推送返回的token,这个就有点糟心了,增加很多的开发量。我还要吐槽一点,华为开发者的后台响应的有点慢,哈哈哈。

vivo开发者平台 注意:这个需要企业开发者账号才行,暂时不开放个人开发者使用

oppo开发者平台 注意:这个如果想要接入必须是已经上线的app才可以,而且他们后台也会有一定的审核,还有,他们对通知栏的自定义样式有一套很严格的要求,也是比较麻烦的。

上面就是各厂商通道的控制后台,一般要发布推送建议还是使用他们的后台进行操作,不建议自己使用他们的后台接口,因为,第一点,他们的后台挺成熟的,第二点,要接入推送一定不止接入一个厂商通道,这样大大增加后台开发的工作量,所以建议使用他们自己的后台。

在app接入推送时,要注意几点吧,都是我自己踩过的坑,哈哈哈

1、使用一个CallActivity作为跳转activity

这种坑出现的情况是这样的,点击推送后的点击事件是打开app,默认打开的是入口activity,我们的app当然不止仅使用一个activity承载,例如我们正在activityB的界面上,此时一条推送进来,我们点击后的事件是打开app,此时就会出现activityA(即入口Activity)位于栈顶,将ActivityB盖住。这样导致activity栈错乱,流程也可能会因此出现错误。

所以:我提供的解决方案是,指定点击通知栏后,跳转的activity为CallActivity(一个中转activity),只要我们在这个activity判断当前是否已经打开应用,如果已经打开就不做处理,如未打开,再跳转到ActivityA(即入口Activity)走正常打开app的流程。因为CallActivity最后都要finish自己,这样就可以保证不会干扰正常Activity栈,也就不会干扰正常的流程。如果想跳转其他页面,可以在这个基础上进行扩展。

2、建议将各厂商通道的集成的需要代码统一到一个library里面去,因为他们在manifest里面要配置的代码太多,这样就会导致主工程的manifest贼多东西。

3、在测试vivo和oppo机型,记得!记得!打开app的通知栏通知开关,他们是默认关闭的。

这是第一种方案,这种方案的缺点是每一次要推送都得跑到他们的后台去推送,一共又有几个后台,产品他们就不开心了。

所有就有了第二种方案,使用第三方集成推送,例如信鸽、极光,他们都集成了厂商通道,但是这种呢,有缺点,他们并没有把所有的厂商通道都集成进去,例如信鸽里面就还没有集成vivo和oppo,所以在这两种机型上,依旧会出现杀后台收不到推送信息的情况,下面是第三方集成推送的入口:

信鸽 注意:虽然它集成了厂商通道,我们还是要到各自系统的开发者平台上申请推送,再信鸽后台完善相应的信息

极光 同上

这两款是我们现在公司在用推送SDK感觉还是可以的,都有集成了厂商通道,推送效果还行,但是整体还是比不上第一种方案,原因由于这些集成推送都是免费的,所以在时效上、到达率上不能保证百分之百,而且前面说了他们并没有把现有的所有厂商通道都集成进去,so,在没有集成系统上,杀后台时基本收不到。

不过好消息是,谷歌爸爸准备出面解决这个局面了,哈哈哈,说要联合所有厂商一起打造一个推送平台,可能到时接入推送就可以很轻松了。

 

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
使用uniapp开发安卓app时,可以通过集成消息推送功能来实现消息的推送和展示。首先,我们需要选择一个适合的消息推送服务平台,例如极光推送、个推等。然后,按照平台提供的文档,注册账号并获取必要的推送服务ID和密钥。 接下来,在uniapp项目中,可以使用插件的方式引入相应的推送插件。可以在uniapp的官方插件市场或第三方插件库中找到合适的推送插件,将其插件包下载并解压。然后,在uniapp的manifest.json文件中,配置插件的路径和所需参数,例如推送服务ID和密钥等。 在应用程序初始化时,我们可以调用推送插件的初始化方法,传入所需的参数,以便与推送服务建立连接。当用户成功登录后,可以调用插件的登录方法,将用户的唯一标识符注册到推送服务中,以便推送服务可以通过标识符将消息推送给相应的用户。 当需要发送消息时,可以调用插件提供的方法,传入消息内容和接收者的标识符等信息。推送服务将根据接收者标识符,将消息推送给相应的用户。用户在接收到消息后,可以在应用程序中展示并处理消息内容。 需要注意的是,不同的推送服务平台可能有不同的接口和参数要求,因此在集成过程中需要仔细阅读相关文档,并根据实际情况进行相应的配置和调用。另外,为了能够在后台推送消息,应用程序必须在系统中注册推送服务,并获得相应的权限。 总结起来,uniapp开发安卓app使用消息推送功能,首先选择合适的推送服务平台,然后引入相应的推送插件并配置参数,初始化插件并建立与推送服务的连接,注册用户标识符并监听推送消息,最后在需要的地方调用推送方法进行消息的推送。这样就可以实现在安卓app使用消息推送功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值