Android保活从入门到放弃:乖乖引导用户加白名单吧(附7大机型加白示例)
1、引言
IM在Android上的保活问题经常在即时通讯网的论坛和技术群里被讨论,自从Android 8.0后系统大大降低了后台运行应用的保活容忍度(详见《Android P正式版即将到来:后台应用保活、消息推送的真正噩梦》),保活从黑科技横行的时代进入了技术蛮荒阶段,真要实现保活,技术难度越来越大。

不过话说回来,既然用黑科技进行保活是Andriod技术的逆潮流,那何不回头是岸,做个“良民”?
本文将以某款线上的IM产品为例,介绍它是如何引导用户在多款主流机型上加白名单的,并分享了该款IM中已制作完成的多达7款主流Andriod机型的详细加白FAQ页面资源(含完整HTML+图片),方便您进行参考、学习和研究,希望能为你的应用开发带来帮助。
特别申明:本文示例中的资源来自某款真实的IM产品,仅供学习和研究,请勿用作非法用途,如有侵权,请告之于我。
学习交流:
- 即时通讯/推送技术开发交流5群:215477170[推荐]
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
本文已同步发布于“即时通讯技术圈”公众号,欢迎关注:

▲ 本文在公众号上的链接是:https://mp.weixin.qq.com/s/JqWloZLBYicpxElVL_HKYw ,原文链接是:http://www.52im.net/thread-3033-1-1.html
2、Android保活,变的越来越不可能了
IM产品在Android上的保活问题从早期的系统版本到现在,从未有人停止过尝试。即时通讯通讯网也随着Andriod系统版本的升级,持续整理了很多篇相关文章,比如下面这些(文章的顺序按照Android系统的版本从低到高)。
- 《应用保活终极总结(一):Android6.0以下的双进程守护保活实践》
- 《应用保活终极总结(二):Android6.0及以上的保活实践(进程防杀篇)》
- 《应用保活终极总结(三):Android6.0及以上的保活实践(被杀复活篇)》
- 《Android进程保活详解:一篇文章解决你的所有疑问》
- 《Android P正式版即将到来:后台应用保活、消息推送的真正噩梦》
- 《全面盘点当前Android后台保活方案的真实运行效果(截止2019年前)》
- 《应用保活终极总结(一):Android6.0以下的双进程守护保活实践》
- 《应用保活终极总结(二):Android6.0及以上的保活实践(进程防杀篇)》
- 《应用保活终极总结(三):Android6.0及以上的保活实践(被杀复活篇)》
- 《Android进程保活详解:一篇文章解决你的所有疑问》
- 《Android P正式版即将到来:后台应用保活、消息推送的真正噩梦》
- 《全面盘点当前Android后台保活方案的真实运行效果(截止2019年前)》
上面这些文章,我们可以看到,自从Android 8.0(即Andriod P)以后,IM以及其它需要在后台保活的产品,存活难度越来越高,黑科技几乎都不起作用了。
于是,一些技术从牛们只能从更深的Android系统层面尝试突破系统的保活限制,比如这两篇:《史上最强Android保活思路:深入剖析腾讯TIM的进程永生技术》、《Android进程永生技术终极揭密:进程被杀底层原理、APP应对被杀技巧》。
正如上面两篇文章,为了跟系统作斗争,可谓斗智斗勇。但Android系统的历史进程终究无人能阻挡,越来越严格的保活限制已经是Android官方及各大手机厂商的共识。
好吧,之前费尽心机折腾的各种黑科技,如今就像浮云一样。。。

3、死磕保活?别做梦了,回头是岸
正如上节所述,鉴于Andriod保活变的越来越不可能,很多原本靠黑科技保活的产品,开始重新审视保活技术实现,到底是把保活黑科技这条路走到黑,还是回归Android官方最佳实践(乖乖引导用户手动设置白名单)?
我个人认为,后者是保活技术发展的必然结果,就像之前分享的这篇文章里所做的尝试一样:《2020年了,Android后台保活还有戏吗?看我如何优雅的实现!》,规范地引导用户“加白”。
放弃“黑科技”,并不意味着技术不行,回归“良民”,反而变的一身轻松。

4、调用系统代码引导用户加白名单,也不完美
之前整理的《2020年了,Android后台保活还有戏吗?看我如何优雅的实现!》一文,是按照不同的机型,自动适配代码并在代码中调用系统的加白名单设置功能。
比如像下面这样的代码调用:

(▲ 以下代码引用自《2020年了,Android后台保活还有戏吗?看我如何优雅的实现!》)
会弹出这样一个窗口:

这个方法确实不错,但因为机型不同、同机型的ROOM版本不同,代码的兼容处理,可能会相当复杂,所以方法虽好,但也并不能一劳永逸的解决所有问题。
5、应用内提供更多机型的“加白”FAQ帮助,是一个补充办法
正如上节所示,调用系统代码引导用户加白名单确实算的上“优雅”,但在不同的机型、同机型的不同系统版本上,可能差异很大,代码兼容性是个头疼的问题,总之这不是个百分百完美的办法。
这就需要一个补充手段,比如我们可以针对大量不同的机型,针对它的最行或最常用系统版本,在应用内以FAQ帮助网页的方式,为用户提供帮助。
比如可以在手机里打开像下面这样FAQ网页页面:

至少能在调用系统代码无法实现的情况下,可以让用户自主找到解决问题的办法。而这便是本文要分享,下节内容会以一个市面上做的比较好的IM应用为例,为你提供一个完整示例。
6、一个完整的“加白”FAQ帮助示例
最近发现的一款市面上的IM应用(此产品跟即时通讯网无任何关系,仅仅是作为技术研究参考对象而已),它内置的“加白”FAQ帮助就很完善。
以下是从该款IM中截下来的图:

以下是该款IM应用中的运行演示视频(点此打开视频链接):
目前该应用中FAQ帮助已覆盖7款主流Andriod机,以下是完整示例页面链接:
- 1)如何解决华硕手机收不到消息提醒?(手机里查看,效果更佳)
- 2)如何解决 HTC 手机收不到消息提醒?(手机里查看,效果更佳)
- 3)如何解决华为手机收不到消息提醒?(手机里查看,效果更佳)
- 4)如何解决小米手机收不到消息提醒?(手机里查看,效果更佳)
- 5)如何解决 OPPO 手机收不到消息提醒?(手机里查看,效果更佳)
- 6)如何解决三星手机收不到消息提醒?(手机里查看,效果更佳)
- 7)如何解决 vivo 手机收不到消息提醒?(手机里查看,效果更佳)
可以看到,这款IM里的“加白”FAQ做的还是比较细、覆盖的机型也比较典型, 如果你有类似的想法或需求,完全可以参考这款产品的实现。尤其在一些特定的场景(比如企业内部的IM等)下,这种方式还是能解决大部分终端用户的问题的。
7、覆盖7款主流机型的“加白”FAQ页面静态资源(附件下载)
我整理了上节中提到的这款IM产品中的全部“加白”FAQ帮助页面静态资源,覆盖7款主流Andriod机型,如果你也需要同样的东西,可以参考这份完整的示例实现,打包到手机中使用之。
以下是这份静态资源示例的内容(图太长,已截掉了一部分):

以下是这份静态资源示例的打包附件:
请从原文附件中下载:http://www.52im.net/thread-3033-1-1.html
附录:更多精品资源汇总
[1] 精品源码下载:
《Java NIO基础视频教程、MINA视频教程、Netty快速入门视频 [有源码]》
《轻量级即时通讯框架MobileIMSDK的iOS源码(开源版)[附件下载]》
《开源IM工程“蘑菇街TeamTalk”2015年5月前未删减版完整代码 [附件下载]》
《微信本地数据库破解版(含iOS、Android),仅供学习研究 [附件下载]》
《NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战 [附件下载]》
《NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战 [附件下载]》
《NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示 [附件下载]》
《NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示 [附件下载]》
《用于IM中图片压缩的Android工具类源码,效果可媲美微信 [附件下载]》
《高仿Android版手机QQ可拖拽未读数小气泡源码 [附件下载]》
《一个WebSocket实时聊天室Demo:基于node.js+socket.io [附件下载]》
《Android聊天界面源码:实现了聊天气泡、表情图标(可翻页) [附件下载]》
《高仿Android版手机QQ首页侧滑菜单源码 [附件下载]》
《开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石 [源码下载]》
《微信团队原创Android资源混淆工具:AndResGuard [有源码]》
《一个基于MQTT通信协议的完整Android推送Demo [附件下载]》
《高仿手机QQ的Android版锁屏聊天消息提醒功能 [附件下载]》
《高仿iOS版手机QQ录音及振幅动画完整实现 [源码下载]》
《Android端社交应用中的评论和回复功能实战分享[图文+源码]》
《Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展[图文+源码]》
《仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]》
《Android版仿微信朋友圈图片拖拽返回效果 [源码下载]》
[2] 精品文档和工具下载:
《重磅发布:《阿里巴巴Android开发手册(规约)》[附件下载]》
《阿里技术结晶:《阿里巴巴Java开发手册(规约)-终极版》[附件下载]》
《基于RTMP协议的流媒体技术的原理与应用(技术论文)[附件下载]》
《独家发布《TCP/IP详解 卷1:协议》CHM版 [附件下载]》
《良心分享:WebRTC 零基础开发者教程(中文)[附件下载]》
《经典书籍《UNIX网络编程》最全下载(卷1+卷2、中文版+英文版)[附件下载]》
《音视频开发理论入门书籍之《视频技术手册(第5版)》[附件下载]》
《国际电联H.264视频编码标准官方技术手册(中文版)[附件下载]》
《Apache MINA2.0 开发指南(中文版)[附件下载]》
《网络通讯数据抓包和分析工具 Wireshark 使用教程(中文) [附件下载]》
《最新收集NAT穿越(p2p打洞)免费STUN服务器列表 [附件下载]》
《高性能网络编程经典:《The C10K problem(英文)》[附件下载]》
《华为内部3G网络资料: WCDMA系统原理培训手册[附件下载]》
《网络测试:Android版多路ping命令工具EnterprisePing[附件下载]》
《Android反编译利器APKDB:没有美工的日子里继续坚强的撸》
《两款增强型Ping工具:持续统计、图形化展式网络状况 [附件下载]》
《Android保活从入门到放弃:乖乖引导用户加白名单吧(附7大机型加白示例)》
[3] 精选视频、演讲PPT下载:
《美图海量用户的IM架构零基础演进之路(PPT)[附件下载]》
《开源实时音视频工程WebRTC的架构详解与实践总结(PPT+视频)[附件下载]》
《QQ空间百亿级流量的社交广告系统架构实践(视频+PPT)[附件下载]》
《海量实时消息的视频直播系统架构演进之路(视频+PPT)[附件下载]》
《YY直播在移动弱网环境下的深度优化实践分享(视频+PPT)[附件下载]》
《QQ空间移动端10亿级视频播放技术优化揭秘(视频+PPT)[附件下载]》
《RTC实时互联网2017年度大会精选演讲PPT [附件下载]》
《微信分享开源IM网络层组件库Mars的技术实现(视频+PPT)[附件下载]》
《微服务理念在微信海量用户后台架构中的实践(视频+PPT)[附件下载]》
《移动端IM开发和构建中的技术难点实践分享(视频+PPT)[附件下载]》
《网易云信的高品质即时通讯技术实践之路(视频+PPT)[附件下载]》
《腾讯音视频实验室:直面音视频质量评估之痛(视频+PPT)[附件下载]》
《腾讯QQ1.4亿在线用户的技术挑战和架构演进之路PPT[附件下载]》
《手机淘宝消息推送系统的架构与实践(音频+PPT)[附件下载]》
《如何进行实时音视频的质量评估与监控(视频+PPT)[附件下载]》
《Go语言构建高并发消息推送系统实践PPT(来自360公司)[附件下载]》
《网易IM云千万级并发消息处理能力的架构设计与实践PPT [附件下载]》
《手机QQ的海量用户移动化实践分享(视频+PPT)[附件下载]》
《钉钉——基于IM技术的新一代企业OA平台的技术挑战(视频+PPT)[附件下载]》
《微信技术总监谈架构:微信之道——大道至简(PPT讲稿)[附件下载]》
《Netty的架构剖析及应用案例介绍(视频+PPT)[附件下载]》
《微信海量用户背后的后台系统存储架构(视频+PPT)[附件下载]》
《在线音视频直播室服务端架构最佳实践(视频+PPT)[附件下载]》
《从0到1:万人在线的实时音视频直播技术实践分享(视频+PPT)[附件下载]》
《Android版微信从300KB到30MB的技术演进(PPT讲稿)[附件下载]》
《极光分享:高并发海量消息推送系统架构演进(视频+PPT)[附件下载]》
《百度网盘千万节点的P2P架构设计(PPT) [附件下载]》
(本文同步发布于:http://www.52im.net/thread-3033-1-1.html)
Android保活从入门到放弃:乖乖引导用户加白名单吧(附7大机型加白示例)的更多相关文章
- Linux入门到放弃之五《用户管理》
用户管理 1.创建新用户user123,以此用户登陆系统,在tmp下创建文件test123: 2.修改test123文件的所有者为root,所属组也为root: 需要先切换为root用户 3.修改te ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(二)
1,接着我们上一篇继续介绍,在上一篇我们介绍了简单的@Inject和@Component的结合使用,现在我们继续以老师和学生的例子,我们知道学生上课的时候都会有书籍来辅助听课,先来看看我们之前的Stu ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(一)
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- 发布 Android Library 到 JCenter 从入门到放弃
最近想倒腾一个小小的 UIKit 到 JCenter,为开源社区贡献一点绵薄之力,于是就有了一系列惨无人道的踩坑史.好,接下来,直奔主题,以下是发布流程. 发布到 JCenter 发布到 JCente ...
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据
OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的 ...
- iOS 即时通讯,从入门到 “放弃”?
原文链接:http://www.jianshu.com/p/2dbb360886a8 本文会用实例的方式,将 iOS 各种 IM 的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. — ...
- 史上最强Java NIO入门:担心从入门到放弃的,请读这篇!
本文原题“<NIO 入门>,作者为“Gregory M. Travis”,他是<JDK 1.4 Tutorial>等书籍的作者. 1.引言 Java NIO是Java 1.4版 ...
- Linux从入门到放弃、零基础入门Linux(第三篇):在虚拟机vmware中安装linux(二)超详细手把手教你安装centos6分步图解
一.继续在vmware中安装centos6.9 本次安装是进行最小化安装,即没有图形化界面的安装,如果是新手,建议安装带图形化界面的centos, 具体参考Linux从入门到放弃.零基础入门Linux ...
随机推荐
- 来看看一台Linux可支持多少个链接 | 漫画
困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题. 很多同学看到这个 ...
- vue3 使用swiper轮播组件
本地环境信息 node版本: nodejs : v18.20.4 npm : 10.7.0 vue版本 "dependencies": { "vue": &qu ...
- jeecg平台相关01-vue2迁移到vue3
01-vue2迁移到vue3 嵌套: datasource: master: url: jdbc:mysql://127.0.0.1:3306/jeecg-boot-vue3?characterEnc ...
- LeetCode题目练习记录 _栈、队列01 _20211012
LeetCode题目练习记录 _栈.队列01 _20211012 84. 柱状图中最大的矩形 难度困难1581 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . ...
- cv算法工程师成长路线
前言 一,计算机系统 1.1,计算机系统书籍 1.2,设计模式教程 二,编程语言 2.1,C++ 学习资料 2.2,Python 学习资料 三,数据结构与算法 3.1,数据结构与算法课程 3.2,算法 ...
- 深度学习优化器:《Lookahead Optimizer: k steps forward, 1 step back》
深度学习优化器:<Lookahead Optimizer: k steps forward, 1 step back> 项目地址: https://github.com/michaelrz ...
- 4. jenkins的配置
Maven安装和配置 在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目. 安装Maven 先上传Maven软件到192.168.66.101 tar -xzf apache-m ...
- 李继刚Lisp提示词灵感之源:压缩推动进步
前面在文章< 访谈李继刚:从哲学层面与大模型对话 >中提到,继刚总结去年写提示词的核心理念是"清晰表达",而今年则是"压缩表达",既而才有火爆全网的 ...
- typeScript 安装调试 (一)
一.安装typeScript 首次使用typeScript 可以执行全局安装typeScript 命令 npm i typescript -g 接着输出 tsc -v 查看版本号即可 创建tsconf ...
- 人形机器人-强化学习算法-PPO算法的实现细节是否会对算法性能有大的影响.
PPO算法是强化学习算法中目前应用最广的算法,虽然这个算法是2017年发表的,但是至今在整个AI领域下的agent子领域中这个算法都是最主要的强化学习算法(至少目前还没有之一),这个算法尤其在Chat ...