文档章节

即时通讯类移动APP开发要点

信贸通
 信贸通
发布于 2014/12/17 11:00
字数 915
阅读 90
收藏 1

1:网络

移动APP经常随着移动设备在不同的网络之间切换,所以处理好网络切换、断网、重连就至关重要。

解决这个问题的办法,就是要求移动APP能以尽量少的通讯量、尽快的速度重新注册服务器。

比如不再从服务器获取配置信息、联系人信息和联系人状态等。

但是如果这段时间服务器端有变化发生,就需要服务器有推送变化信息的能力。

同时,服务器对客户端重连间隔要保持宽容态度,不要因为客户端在给定的较短时间内没有重连上就移除这个会话。要知道,在移动环境下,客户端断掉连接只是不得已,一有机会,它就会努力重连上来的。

另外,由于网络的不稳定性,消息的发送方和接受方一定要有确认机制,不管这种确认机制是端对端的的还是通过服务器中转,以避免客户端突然掉线,而服务器还未及时知晓的情况。

2:电池

移动APP必须尽量减少电池的消耗。

以iOS为例,它以三个规则来强制APP最小化电池消耗:

一是APP在后台是不能主动运行的,特定功能的APP可以设置timer唤醒,但最频繁也只能每10分钟运行若干秒。

二是APP在后台被唤醒的次数有严格限制,不能在300秒内被唤醒超过15次,否则被系统终止。

三是APP即使申请后台任务,最多也只有60秒的运行时间。

满足这些要求的最好办法,就是不要试图让移动IM应用在后台运行。而把网络监听这样的任务,在APP进入后台的时候转交给iOS系统来完成。

而服务器则要有灵活的过滤机制,不管是主动还是被动的,过滤掉绝大多数试图发给客户端的网络通讯,以保持客户端睡眠的状态。而仅仅把必要的信息,如即时消息,推送给客户端。

3:内存

移动APP要尽量减少内存消耗。

以iOS为例,系统会保持尽可能多的APP在内存中,但是内存不足时它就会终止已被挂起的APP来回收内存。这种情况下,首先被回收的就是占内存多的后台APP。

解决这个问题的一个办法,就是在内存消耗较多的模块,通常是模型层的组件,提供持久化机制。当APP切换到后台的时候保存大多数暂时不会用到的数据到文件系统,等回到前台的时候再重建这些数据结构。

比如所有联系人的详细信息就适合这么做。

4:系统资源

移动APP要尽量减少对系统资源的占有。

应该以最少使用时间为原则来使用系统资源,以iOS为例,在APP切换到后台之前就要放弃对地址簿的访问。

5:后台运行

以上几点都跟APP在后台运行有关,其实这也是移动IM应用的一大特点。所谓养兵千日、用兵一时,移动IM应用绝大多数时间都躺在后台,所以处理好后台运行就处理好了移动IM应用的大部分。

© 著作权归作者所有

信贸通
粉丝 1
博文 20
码字总数 12778
作品 0
长沙
部门经理
私信 提问
线下技术沙龙--APP即时通讯技术线下交流会

主题背景 掌握一个高度稳定可靠的即时通讯技术在实践上会遇到很多的坑点、难点。尤其是支持千万级用户的高并发技术,更需要长期深入的积累和实践的验证。 环信作为国内首家即时通讯云厂商,截...

Jack
2014/09/22
115
0
线下技术沙龙--APP即时通讯技术线下交流会

主题背景 掌握一个高度稳定可靠的即时通讯技术在实践上会遇到很多的坑点、难点。尤其是支持千万级用户的高并发技术,更需要长期深入的积累和实践的验证。 环信作为国内首家即时通讯云厂商,截...

Jack
2014/09/22
9
0
APP即时通讯技术线下交流会

开源力量上海线下技术沙龙 - APP即时通讯社交技术交流 温馨提示:本活动举办地点IC咖啡,全场饮品免费畅饮哦。 想让你的手机APP快速加入即时通讯功能吗? 快速?! 有多快,3分钟够不够,其实...

Jack
2014/08/26
190
3
APP即时通讯技术线下交流会

开源力量上海线下技术沙龙 - APP即时通讯社交技术交流 温馨提示:本活动举办地点IC咖啡,全场饮品免费畅饮哦。 想让你的手机APP快速加入即时通讯功能吗? 快速?! 有多快,3分钟够不够,其实...

Jack
2014/08/26
3
0
移动端IM开发需要面对的技术问题

1、前言 这两年多一直从事网易云信 iOS 端 IM SDK的开发,期间不断有兄弟部门的同事和合作伙伴过来问各种技术细节,干脆统一介绍下一个IM APP的方方面面,包括技术选型(包括通讯方式,网络连...

JackJiang-
2016/08/09
257
0

没有更多内容

加载失败,请刷新页面

加载更多

可能是国内第一篇全面解读 Java 现状及趋势的文章

作者 | 张晓楠 Dragonwell JDK 最新版本 8.1.1-GA 发布,包括全新特性和更新! 导读:InfoQ 发布《2019 中国 Java 发展趋势报告》,反映 Java 在中国发展的独特性,同时也希望大家对 Java 有...

阿里云官方博客
17分钟前
3
0
Spring Boot 2.x基础教程:Swagger静态文档的生成

前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了。如果您还不熟悉这块,可以先阅读: Spring Boot 2.x基础教程...

程序猿DD
20分钟前
3
0
《毅力》读书笔记

1.确信你全身心地投入 2.准备好为目标进行艰难的跋涉 3.通过减少需要使用毅力的情形,为将来的挑战做好准备 4.尽可能具体细致地确定你的目标和实现目标的过程 5.把挑战分解为小而易于管理的小...

lingch
21分钟前
3
0
zk中快速选举FastLeaderElection实现

选举涉及概念 服务器状态 投票 如何选择投票? 协议 选举 如何进行选举? epoch 发送者 接收者 发送队列 接收队列 服务器状态 public enum ServerState { LOOKING,寻找Leader状态,当服务处于...

writeademo
24分钟前
3
0
教你玩转Linux—磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用三个命令为df、du和fdisk。 df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少...

Linux就该这么学
27分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部