当前位置:首页 > 编程开发

Android 使用极光/友盟推送,APP进程在杀死后收不到推送的处理方法(转)

webgou6年前 (2020-12-30)编程开发258

 为什么会存在这样的 问题,刚开始的时候我也搞不清楚,之前用极光的时候杀死程序后也会收到推送,但最近重新再去集成时就完全不好使了,这我就纳闷了,虽然Google在高版本上的Android上面不建议线程守护,所以将进程有关的Service都杀掉了,但旧版本还是有这个功能的啊 !真尼玛,后来猜测估计是因为要适配6.0所以低版本的一些代码就删除了,造成低版本的也不行了,接下来分析一下这个问题。

首先我们把Android分为两类机型,一种是原生态的Android系统,比如Nexus,三星等机型,一种是深度定制的(当然不是所有定制机型都存在你说的问题),比如小米,魅族。 我们分开来讨论:

1. 原生态系统:
App不打开,可以收到消息。 这个不管是老版SDK,还是新版本SDK,都是这样的,在三星部分手机上可以。

2. 深度定制系统(目前有MIUI,魅族):
仍然分两种情况来说明这个问题:
2.1 .1 友盟上来说设备上有集成友盟消息推送的其它App已经打开(要求SDK版本是2.2.0以上),你的App不打开,也能收到消息。 你可以尝试在你的设备上安装我们的Demo,以及你们的App,打开友盟demo,不打开你们的App,给你们的App发通知,是能收到的。
2.1.2 设备上所有集成友盟推送SDK的App都没有打开,那么就收不到消息。

2.2.1 极光的原理也大概是通过服务保持和服务器端的长连接,进行心跳检测,进行消息数据的传递的

3. 解决方案
仍然分两种情况来说明这个问题:
3.1 目前来说友盟及极光等都没有解决这样的问题,确实在用户不给权限的情况下,很难处理。

3.2 在集成友盟/极光的基础上集成小米推送、华为推送。
3.3 在小米、华为、oppo等手机上如果想让APP杀死后还收到推送的话,只能让用户手动操作,以下是在极光看到的一些步骤:

由于第三方 ROM 的管理软件需要用户手动操作

  • 小米【MIUI】

    • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启
    • 通知栏设置:应用默认都是显示通知栏通知,如果关闭,则收到通知也不会提示
    • 网络助手:可以手动禁止已安装的第三方程序访问2G/3G和WIFI的网络和设置以后新安装程序是否允许访问2G/3G和WIFI的网络
    • MIUI 7 神隐模式: 允许应用进行自定义配置模式,应用在后台保持联网可用,否则应用进入后台时,应用无法正常接收消息。【设置】下电量和性能中【神隐模式】
  • 华为【Emotion】

    • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程不会开启,只能手动开启应用
    • 后台应用保护:需要手动把应用加到此列表,否则设备进入睡眠后会自动杀掉应用进程,只有手动开启应用才能恢复运行
    • 通知管理:应用状态有三种:提示、允许、禁止。禁止应用则通知栏不会有任何提醒
  • 魅族【Flyme】

    • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启
    • 通知栏推送:关闭应用通知则收到消息不会有任何展示
    • 省电管理: 安全中心里设置省电模式,在【待机耗电管理】中允许应用待机时,保持允许,否则手机休眠或者应用闲置一段时间,无法正常接收消息。
  • VIVO【Funtouch OS】

    • 内存一键清理:需要将应用加入【白名单】列表,否则系统自带的“一键加速”,会杀掉进程
    • 自启动管理:需要将应用加入“i管家”中的【自启动管理】列表,否则重启手机后进程不会自启。但强制手动杀进程,即使加了这个列表中,后续进程也无法自启动。
  • OPPO【ColorOS】

    • 冻结应用管理:需要将应用加入纯净后台,否则锁屏状态下无法及时收到消息
    • 自启动管理:将应用加入【自启动管理】列表的同时,还需要到设置-应用程序-正在运行里锁定应用进程,否则杀进程或者开机后进程不会开启,只能手动开启应用

今本人亲自尝试,按照上列步骤在对应的手机中开启权限,即使APP杀死也能收到推送,但这种方案太不好了,只能期待第三方尽快解决。



作者:凹凸怪cq
链接:https://www.jianshu.com/p/0988395141df
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=651

分享给朋友:

“Android 使用极光/友盟推送,APP进程在杀死后收不到推送的处理方法(转)” 的相关文章

对话框条的制作CDialogBar

1.创建对话框资源:在对话框资源编辑器内生成一个属性必须设置为....…

递归实现阶乘

[CODE_LITE] int multi(int n) { if(n == 0) return 1; return (n*multi(n-1)); } int _tmain(int argc, _TCHAR* argv[]) { int sum = multi(4); } [/CODE…

位图数据内存优化

优化主界面内存占用点滴: 目的:在系统资源有限的情况下,使占有内存能控制在50M 一共41张图片: 1.用cs4工具,自带解析图片:内存从24M-58M 2.URLoader, 一张张解码,用完释放,发现解码速度太慢,造成内存泄漏,达不到效果…

如何查询mysql中执行效率低的sql语句

内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种....…

GDB调试精粹及使用实例

一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一…

wince串口蓝牙

 第一步,如果你是一个刚开始搞蓝牙的人,那么,就先用wince自带的 bthcsr 驱动来测试是否正常与主机通信(也测试BT是否是好的) 在注册表加入(这些内容在一份bchs-srn-004_wpp…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。