前言
一直想做一款自己的即使通信APP,加一些特有的功能,用来和家人通信,但是还真不好搞,在尝试用Socket时,最大问题就是保证消息可靠不丢,重发等基本即时通信该有的东西,后来选择开源实现,也就是XMPP,服务端采用openfire,还有smack,但是smack的类库不是很熟悉,在直接开发时候导致离线后消息丢失,当然我也去尝试解决这个问题,得到的解决方法是先设置离线状态,然后使用离线消息管理器去拉取取消息,但也无济于事,然后想想算了,继续找基于XMPP开源的APP吧。
gitee、github搜了半天,可能关键字不对,搜到的都不符合我心意,虽然在gitee上有一个,但是看那个感觉不靠谱,后来去google play上找了一番,还真是多的数不甚数,然后下载了十几个基于XMPP的APP,这些都可以指定服务器,也就是自己搭建好openfire,然后APP中设置openfire的地址就可以,而且这些大部分都是开源的,最终选择了Conversations。
测试了一下,离线消息也没问题,发送状态也有,界面也比较干净,就选择他了。
导入源码后懵逼
下载源码后导入在AndroidStudio中,是一脸懵逼,小小的东西居然写了这么多东西,如果要修改的话,还真的好好研究几天。
启动openfire
当然要真正做到即时通信,XMPP服务是少不了的,对比来对比去,选择了openfire,在官网下载后进入bin目录,执行./openfire run
就行,或者是./openfire start
,区别是一个在当前终端运行,start是后台运行,如果要终止的话,使用./openfire stop
命令,但是使用run,想要关闭时,直接ctrl+c就行,start通常在服务器上部署时候使用。
还需要进入控制台进行初始化,这里就不说了。
然后在Conversations指定另个一好友的XMPP地址,就可以发起对话了。
关于音视频通话,可以集成jitsi Meet,有点难度,后续我集成了再说吧。