Android IM实践
来源:互联网 发布:yum配置本地源 编辑:程序博客网 时间:2024/05/17 22:12
IM(Instant Messaging)在Android中可谓运用广泛。QQ,Wechat,陌陌等应用都可以看作IM实时通讯APP,实时通讯在社交类APP中运用范围较广,其功能看起来也是比较cool的。今天我们将研究一下android IM软件是如何实现的。像IM这种实施通讯软件,除非公司有比较大的实力和精力,才会自己去整这么一套框架。对于广大中小软件开发者来说,想到比较多的就是开源框架。Opensource对于开发者来说简直就是福音,对于整个软件行业也起到了不小的推动性的作用。
Openfire在这种环境下应运而生,而且作为实时通讯类开源框架迅速走红,下面我们就一起来学习这样一款拯救宇宙的开源框架,文章的最后会运用Openfire做出一个可以实时通讯的AndroidAPP,如果结合上地理位置再多点UI和交互上的设计提升,这不就是陌陌吗?YY了一会,觉得挺有趣,那么 Just do it
。
Openfire概念性介绍请点击:http://blog.csdn.net/ithomer/article/details/7192257
Openfire官网:http://www.igniterealtime.org/
Openfire安装文档:http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/install-guide.html
1. 选择服务器
对于实时通讯软件,除了我们的客户端,服务器端更是关键。因为服务器是连接两个会话的桥梁。根据安装文档中,Openfire提供了多个平台的安装版本。Windows, Linux/Unix。所以支持还是很丰富的。至于服务器的选择我们可以选择自己的ECS,本地PC,或者Linux虚拟机。选择本机安装的请略过此步骤。
为了更加符合真实的安装环境,我选择本地的Linux虚拟机作为服务器环境。方便以后部署到真实的服务器环境中。
在进行下一步之前请先在server上安装mysql和java。
2. Install openfire
从官网上下载对应的版本,我这里选择Openfire_3.9.3 Linux版本,登陆服务器后直接使用wget下载
wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire-3.9.3-1.i386.rpm//下载完成后使用rpm进行安装rpm -ivh openfire-3.9.3-1.i386.rpm
Openfire安装完成后会在/opt目录下生成openfire/目录。
安装完成后就需要进行数据库的配置,按照官方文档:
Make sure that you are using MySQL 4.1.18 or later (5.x recommended) ¹.Create a database for the Openfire tables:mysqladmin create [databaseName](note: "databaseName" can be something like 'openfire')Import the schema file from the resources/database directory of the installation folder:Unix/Linux: cat openfire_mysql.sql | mysql [databaseName]; Windows: type openfire_mysql.sql | mysql [databaseName];Start the Openfire setup tool, and use the appropriate JDBC connection settings.
首先使用mysqladmin create openfire
创建名为openfire的数据库, cd /opt/openfire/resources/database
进入openfire的数据库资源目录,使用cat openfire_mysql.sql | mysql openfire
导入openfire的schema数据库文件。
3. 启动Openfire服务
使用rpm安装完成后的openfire会在/etc/init.d/中自动生成openfire 文件,可以直接在这里打开服务.
Usage /etc/init.d/openfire {start|stop|restart|status|condrestart|reload}
运行openfire服务:/etc/init.d/openfire start
,运行/etc/init.d/openfire status
显示没有成功运行。
查看log cat /opt/openfire/logs
,显示nohup: cannot run command /opt/openfire/jre/bin/java: No such file or directory
,看来openfire找不到java,所以不能成功启动,但是我们的系统的确已经安装了java,所以可以通过软链解决:
cd /opt/openfire/jre/bincp java java.bakrm javaln -s /usr/bin/java javaservice openfire start
软链完成之后,再次开启openfire服务:
[root@iZ23572i0rtZ bin]# /etc/init.d/openfire statusopenfire is not running[root@iZ23572i0rtZ bin]# /etc/init.d/openfire startStarting openfire:[root@iZ23572i0rtZ bin]# /etc/init.d/openfire statusopenfire is running
status显示openfire已经成功启动。通过虚拟机ip访问9090端口,这时会跳转到setup界面,只需要通过setup便可以完成相关配置。
配置完成之后即可以登录自己的管理控制台。
4. Integrate to Android
既然服务器安装完成,那我们可以着手我们的APP。与Openfire关联的客户端XMPP协议库是smack。摸索一番之后发现,要在Android中使用Smack必须使用ASmack库。ASmack下载地址。
以实例为主,通过smack实现两个客户端之间的即时通信。下载地址
Attention
- 在AndroidManifest中必须添加Internet permission,否则连接失败。
<uses-permission android:name="android.permission.INTERNET"/>
. - 客户端对客户端创建聊天时,SID为 username@XXXX, XXXX表示的是服务器名字,我这里是ECS主机名。
5. Github Repository
https://github.com/gongmingqm10/SmackDemo
- Android IM实践
- Android平台上关于IM的实践总结
- Android平台上关于IM的实践总结
- fir.im Weekly - 2016 年 Android 最佳实践列表
- Android im
- 实践Jenkins+Gradle实现Android自动化构建,并上传至fir.im
- android IM项目完成
- openfire+android实现IM
- Android-IM架构设计
- Android-IM架构设计
- Android-IM架构设计
- Android-IM架构设计
- Android-IM架构设计
- Android IM(六)总结
- android接入即时IM
- Android-IM架构设计
- Android-IM通信
- android im--->weichat
- 关于Android的百度地图demo出现java.lang.NoClassDefFoundError问题解析
- VC 获取控件在对话框中的坐标
- 机器学习 Support Vector Machines 2
- Spring mvc中@Requestmapping参数配置
- 第6周项目4-利用成员函数,友元函数,一般函数求亮点间的距离
- Android IM实践
- 上拉电阻与下拉电阻的作用和区别
- 博弈论-美女的硬币
- django操作数据库
- 记12号腾讯清理日活动有感
- Binary Tree
- 图解SQL Server 2008入门总结
- Rotate Array(3 ways)
- 多核初始化和启动过程