我的本意是做一个Android端聊天软件,出于兴趣,同时也希望在这个过程中能有所收获。
整个过程是这样的:
一.搭建环境
1.server端:
1.1安装openfire 。
在百度搜索openfire,进入官网后我选择了最新版本。安装过程无须赘述。
1.2开始运行。
报错了,具体的现象有些记不清,大概是无法开启服务,貌似是因为我没有安装jdk,于是安装jdk,之后可以开启服务。
1.3配置服务端。
我几乎都是选择默认选项。
2.Client端:
2.1 依赖。
IDE 是 android studio。需要添加smack依赖。最初我并不知道需要添加什么依赖,在smack的github上没找到官方的文档,于是各种search,总之最后如下:
compile 'org.igniterealtime.smack:smack-tcp:4.1.4'
// Optional for XMPP-IM (RFC 6121) support (Roster, Threaded Chats, …)
compile 'org.igniterealtime.smack:smack-im:4.1.4'
// Optional for XMPP extensions support
compile 'org.igniterealtime.smack:smack-android-extensions:4.1.4'
compile 'org.igniterealtime.smack:smack-experimental:4.1.4'
compile 'org.igniterealtime.smack:smack-core:4.1.4'
目前还没遇到由于依赖引起的问题。and 关于各个依赖具体负责什么事情,我并不知晓,只能望文生义的大致猜测一下。
二.开发
1.UI
不是重点,暂不叙述。
2.基本功能点
这个是重点,首先考虑的就是最基本的功能,无外乎 注册、登陆、根据条件搜索用户、加好友、删除好友……and so on
基本是API的使用。也许是阅读能力&搜索能力 差,我始终没有找到相对完善的文档来引导我去了解smack在client中要如何使用,基本是点开源码阅读注释+百度+Google……。这样效率蛮低的。
3.其他功能
暂时没有规划。
*目前遇到的值得注意的问题
1.注册的时候,我不知道如何判断用户名是否存在。这个问题暂时没有fix。网上的demo中使用的smack版本基本较旧,实现了相关功能,但其所使用的api已经不能再4.1.4中使用。
2.search 功能。还是老问题,我并不知道如何搜索,虽然阅读源码后我知道有个类似SearchManager的类,但仍然不知从何下手,后来通过搜索,参照别人我写了一个方法,根据username搜索用户,报错,具体错误log已经遗失,大概是说无法连接remote 服务,让我十分苦恼,真的不知道哪里做得不对,后来我在openfire 上偶然发现 server是可以安装各种插件的,果然list下面有个插件叫做“search”,安装以后search服务有了结果,可以正常返回搜索到的用户list。
我觉得给造成困扰的这些问题,都是一个问题:没有找到并阅读文档,光看源码真是一头雾水。