导航:首页 > 操作系统 > android即时通讯服务端

android即时通讯服务端

发布时间:2023-01-09 09:00:24

① 要做一个类似于微信或者QQ的android、ios的聊天应用,请问服务器端用什么技术或开源框架比较好

即时聊天通用的协议是 XMPP,基于这个协议有一套java开源的服务端 openfire,可以快速的搭建一套即时聊天服务端。
但是现在有不少云即时通讯服务。例如
容联云通讯、云之讯、环信、融云
这些云服务提供了api,我们基于他的api开发很容易实现自己的即时聊天软件。服务端,服务器都不用我们自己管了,极大的节省了成本和开发周期。而且这些云服务基础服务都是免费的。

建议用第三方的云服务实现。

② 盘点im即时通讯开发中Android后台保活方案

对于IM应用和消息推送服务的开发者来说,在Android机型上的后台保活是个相当头疼的问题。

老板一句:“为什么微信、QQ能收到消息,而你写的APP却不行?”,直接让人崩溃,话说老板你这APP要是整成微信、APP那么牛,直接进手机厂商白名单,还要程序员在这瞎忙活?

好了,抱怨归抱怨,活还得干,不然靠谁养活广大苦逼的程序员?

正因为Android系统版本的差异,也导致了各种保活黑科技的运行效果大相径庭,所以本文正好借此机会,盘点一下当前主流(截止2019年前)的保活黑科技在市面上各版本Android手机上的运行效果,希望能给大家提供一些客观的参考。

其实Android端APP搞保活的目的倒不是为了干什么见不得人的坏事(但不排除动机不纯的开发者),主要是像IM即时通讯应用和资讯类应用等需要搞后台消息推送、运动类应用需要在后台实时监测用户的运动数据等,因为现在越来越多的手机厂商为了省电策略考虑,基本上如果你的应用没有被加入白名单,一旦处于后台就会被系统限制甚至干掉,但使用APP的用户才不听你这些解释——反正“我”就要你的APP能如期正常运行,开发者也是不得已而为之。

以消息推送为例,当APP处于后台或关闭时,消息推送对于某些应用来说非常有用,比如:

    1)IM即时通讯聊天应用:聊天消息通知、音视频聊天呼叫等,典型代表有:微信、QQ、易信、米聊、钉钉、Whatsup、Line;

    2)新闻资讯应用:最新资讯通知等,典型代表有:网易新闻客户端、腾讯新闻客户端;

    3)SNS社交应用:转发/关注/赞等通知,典型代表有:微博、知乎;

    4)邮箱客户端:新邮件通知等,典型代表有:QQ邮箱客户端、Foxmail客户端、网易邮箱大师;

    5)金融支付应用:收款通知、转账通知等,典型代表有:支付宝、各大银行的手机银行等;

      .... ....

在上述的各种应用中,尤其对于用户接触最多、最平常的IM聊天应用或新闻资讯来说,保活和消息推送简直事关APP的“生死”,消息推送这种能力已经被越来越多的APP作为基础能力之一,因为移动互联网时代下,用户的“全时在线”能力非常诱人和强大,能随时随地即时地将各种重要信息推送给用户,无疑是非常有意义的。

题外话:实际上,对于后台消息推送能力,Android原版系统早就内置了系统级推送服务(跟iOS上的APNs服务是一个东西),它就是GCM服务(现在升级为FCM了),但众所周之的原因,谷哥的服务在国内都是用不了的(你懂的)——无奈啊!

主要黑科技方案有:

    1)监听广播:监听全局的静态广播,比如时间更新的广播、开机广播、解锁屏、网络状态、解锁加锁亮屏暗屏(3.1版本),高版本需要应用开机后运行一次才能监听这些系统广播,目前此方案失效。可以更换思路,做APP启动后的保活(监听广播启动保活的前台服务);

    2)定时器、JobScheler:假如应用被系统杀死,那么定时器则失效,此方案失效。JobService在5.0,5.1,6.0作用很大,7.0时候有一定影响(可以在电源管理中给APP授权);

    3)双进程(NDK方式Fork子进程)、双Service守护:高版本已失效,5.0起系统回收策略改成进程组。双Service方案也改成了应用被杀,任何后台Service无法正常状态运行;

    4)提高Service优先级:只能一定程度上缓解Service被立马回收。 即时通讯聊天软件app开发可以咨询蔚可云。

针对上述方案,具体的实现思路,通常是这样的:

    1)进程拉活:AIDL方式单进程、双进程方式保活Service(最极端的例子就是推送厂商的互相唤醒复活:极光、友盟、以及各大厂商的推送,同派系APP广播互相唤醒:比如今日头条系、阿里系);

    2)降低oom_adj的值:常驻通知栏(可通过启动另外一个服务关闭Notification,不对oom_adj值有影响)、使用”1像素“的Activity覆盖在getWindow()的view上(据传某不可言说的IM大厂用过这个方案,虽然他们从未正面承认过)、循环播放无声音频(黑科技,7.0下杀不掉);

    3)监听锁屏广播:使Activity始终保持前台;

    4)使用自定义锁屏界面:覆盖了系统锁屏界面;

    5)创建子进程:通过android:process属性来为Service创建一个进程;

    6)白名单:跳转到系统白名单界面让用户自己添加app进入白名单。

使用AIDL绑定方式新建2个Service优先级(防止服务同时被系统杀死)不一样的守护进程互相拉起对方,并在每一个守护进程的ServiceConnection的绑定回调里判断保活Service是否需要重新拉起和对守护线程进行重新绑定。

后台播放音乐这种保活方法,亲身经历过:

记得当时用的是某运动记步APP,它为了保活就是这么干的。之所以被我发现,是因为在我的Android手机上,每次打开这个APP居然总能莫名其妙听到若有若无的环境噪音样的声音,尤其安静的场所下更明显。我个人估计这个APP里用的保活音频文件,很可能就是程序员在简陋的条件下随手自已录制的,虽然也是不得以为之,但做法确实是有点粗糙。

总结一下,以上方案在当前主流手机上的运行效果

【1】双进程守护方案(基于onStartCommand() return START_STICKY):

    1)原生5.0、5.1:原生任务栏滑动清理app,Service会被杀掉,然后被拉起,接着一直存活;

    2)金立F100(5.1):一键清理直接杀掉整个app,包括双守护进程。不手动清理情况下,经测试能锁屏存活至少40分钟;

    3)华为畅享5x(6.0):一键清理直接杀掉整个app,包括双守护进程。不手动清理下,锁屏只存活10s。结论:双进程守护方案失效;

    4)美图m8s(7.1.1):一键清理直接杀掉整个app,包括双守护进程。不清理情况下,锁屏会有被杀过程(9分钟左右被杀),之后重新复活,之后不断被干掉然后又重新复活。结论:双守护进程可在后台不断拉起Service;

    5)原生7.0:任务栏清除APP后,Service存活。使用此方案后Service照样存活;

    6)LG V30+(7.1.2):不加双进程守护的时候,一键清理无法杀掉服务。加了此方案之后也不能杀掉服务,锁屏存活(测试观察大于50分钟);

    7)小米8(8.1):一键清理直接干掉app并且包括双守护进程。不清理情况下,不加守护进程方案与加守护进程方案Service会一直存活,12分钟左右closed。结论:此方案没有起作用。

▲ 结论:除了华为此方案无效以及未更改底层的厂商不起作用外(START_STICKY字段就可以保持Service不被杀)。此方案可以与其他方案混合使用。

【2】监听锁屏广播打开1像素Activity(基于onStartCommand() return START_STICKY):

    1)原生5.0、5.1:锁屏后3s服务被干掉然后重启(START_STICKY字段起作用);

    2)华为畅享5x(6.0):锁屏只存活4s。结论:方案失效;

    3)美图m8s(7.1.1):同原生5.0;

    4)原生7.0:同美图m8s;

    5)LG V30+(7.1.2):锁屏后情况跟不加情况一致,服务一致保持运行,结论:此方案不起作用;

    6)小米8(8.1):关屏过2s之后app全部被干掉。结论:此方案没有起作用。

▲ 结论:此方案无效果。

【3】故意在后台播放无声的音乐(基于onStartCommand() return START_STICKY):

    1)原生5.0、5.1:锁屏后3s服务被干掉然后重启(START_STICKY字段起作用);

    2)华为畅享5x(6.0):一键清理后服务依然存活,需要单独清理才可杀掉服务,锁屏8分钟后依然存活。结论:此方案适用;

    3)美图m8s(7.1.1):同5.0;

    4)原生7.0:任务管理器中关闭APP后服务被干掉,大概过3s会重新复活(同仅START_STICKY字段模式)。结论:看不出此方案有没有其作用;

    5)LG V30+(7.1.2):使用此方案前后效果一致。结论:此方案不起作用;

    6)小米8(8.1):一键清理可以杀掉服务。锁屏后保活超过20分钟。

▲ 结论:成功对华为手机保活。小米8下也成功突破20分钟。

【4】使用JobScheler唤醒Service(基于onStartCommand() return START_STICKY):

    1)原生5.0、5.1:任务管理器中干掉APP,服务会在周期时间后重新启动。结论:此方案起作用;

    2)华为畅享5x(6.0):一键清理直接杀掉APP,过12s左右会自动重启服务,JobScheler起作用;

    3)美图m8s(7.1.1):一键清理直接杀掉APP,无法自动重启;

    4)原生7.0:同美图m8s(7.1.1);

    5)小米8(8.1):同美图m8s(7.1.1)。

▲ 结论:只对5.0,5.1、6.0起作用。

【5】混合使用的效果,并且在通知栏弹出通知:

    1)原生5.0、5.1:任务管理器中干掉APP,服务会在周期时间后重新启动。锁屏超过11分钟存活;

    2)华为畅享5x(6.0):一键清理后服务依然存活,需要单独清理才可杀掉服务。结论:方案适用;

    3)美图m8s(7.1.1):一键清理APP会被杀掉。正常情况下锁屏后服务依然存活;

    4)原生7.0:任务管理器中关闭APP后服务被干掉,过2s会重新复活;

    5)小米8(8.1):一键清理可以杀掉服务,锁屏下后台保活时间超过38分钟;

    6)荣耀10(8.0):一键清理杀掉服务,锁屏下后台保活时间超过23分钟。

③ 请问如何开发android IM即时通讯软件

就想普通开发一样,用java开发客户端软件。主要是服务端比较难,需要服务器的。

④ 开发一个基于android的即时通讯软件,怎么通过局域网来让电脑上的虚拟机和手机上的软件都能运用服务器

做一个路由跳转。实现网络通信

⑤ android 即时通信。。如何实现

Android现在即时通讯(或者消息推送)有好几个开源项目框架可以实现,可以使用XMPP来实现即时通信。

XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)。

1. XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分; 核心的XML流传输协议 基于XML流传输的即时通讯扩展应用 XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。 XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。

2.XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。

3.传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送,要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。

⑥ 请问如何开发android IM即时通讯软件

主要是服务端比较难,需要服务器的。

阅读全文

与android即时通讯服务端相关的资料

热点内容
未来最值得投资的加密货币 浏览:524
ascii码是编译的时候用吗 浏览:779
压缩机感应包可以通用吗 浏览:410
方舟服务器怎么发布到搜索列表 浏览:270
xml防反编译 浏览:239
数据传输加密系统技术方案 浏览:842
程序员没有准备去面试 浏览:4
51单片机usb鼠标 浏览:879
qq服务器的ip地址查询 浏览:112
java仿qq聊天 浏览:400
解压的ipa重新打包 浏览:142
程序员那么可爱vip版 浏览:239
程序员怎么升职 浏览:243
图形化命令按钮vb 浏览:987
vcu盘加密怎么设置 浏览:414
如何加密备份微信聊天记录 浏览:529
安卓手机如何模拟键盘 浏览:931
查看dns地址命令 浏览:768
android录屏工具 浏览:841
成都互动直播系统源码 浏览:955