基于XMPP实现即时通讯(一、环境搭建)

关于XMPP 本地环境搭建、登录、好友列表,好友状态、发送接收多媒体消息、增删好友、群聊等功能点,大家可以跟我一起来学习, 最后章节会将整个完整Demo放到我的github。
因为很早就开始用swift来做项目,所以本文以swift进行示例。Xcode版本为7.3.1。

一、IM协议及服务器选型

参考
http://liudanking.me/arch/xmpp%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%80%89%E5%9E%8B/
协议选型:XMPP已经成为标准的IM协议。XMPP官网:http://XMPP.org/
服务器型:使用广泛的是ejabberd,jabberd 2.x, Openfire,Tigase。从编程语言角度来看主要是JAVA和Erlang。JAVA语言的优势是类库完备,容易招人。Erlang的优势是hot code swap,live console, 高并发。而且ejabberd是对XMPP协议支持最好、实现最为全面的server。因此企业在不考虑独立开发服务器的情况下,初期选型基本建议采用ejabberd。

本文我们主要实践iOS端流程,不考虑太多服务器实现,因为Openfire易安装,插件功能丰富,我们使用Openfire

二、MAC上搭建MySQL

因为服务器需要数据库支撑,所以我们在搭建Openfire前要先搭建数据库。参照: http://www.cnblogs.com/xiaodao/archive/2013/04/04/2999426.html ,总结如下:

  1. 安装:在 MySQL官网上 http://dev.mysql.com/downloads/mysql/,下载MySQL,安装最新dmg版本
  2. 运行:在系统偏好设置最下面一栏找到MySQL图标,点击图标后,点击Start MysAL Server 按钮,启动MySQL
  3. 配置:输入alias命令 alias mysql=/usr/local/mysql/bin/mysql 回车,再输入alias mysqladmin=/usr/local/mysql/bin/mysqladmin
  4. 设置MySQL root帐号的密码: mysqladmin -u root password 初始密码
  5. 连接数据库: mysql -u root -p
  6. 创建Openfire数据库: create database openfire

三、MAC上搭建Openfire

参照 http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html 只需要执行到通过 admin登陆管理控制台即可。(不必通过数据库修改默认admin账户,可能会导致无法登录的情况,要修改可通过控制台进行新增或修改)

四、工程中集成XMPP

  1. XMPP的git地址为: https://github.com/robbiehanson/XMPPFramework 。其中有较详细文档
  2. 集成至Xcode: 最简单的方法,通过CocoaPods集成: pod “XMPPFramework”。强烈推荐没有用过CocoaPods的同学使用这个第三方库管理工具。
    CocoaPods详解之——使用篇:
    http://blog.csdn.net/wzzvictory/article/details/18737437
    (其中 http://ruby.taobao.org/ 这个源地址应该要更新成 https://ruby.taobao.org/
  3. 如果cocoapods提示 target overrides the ENABLE_BITCODE build setting defined等信息,可以在build settings中将 Enable Bitcode 的选项中添加other内空:$(inherited)。此时选项显示为 No-$(inherited) 。再重新运行pods命令即可解决

作者 @代码书生
2016 年 06月 16日

尘满面,鬓如霜,Bug多多岂不白忙?重敏捷,保质量,Case重重亦可远航。^.^