概述
现在很多软件都加入了聊天功能,也有许多公司直接提供了app聊天的组件,简单集成就行,但是弊端在于组件一是要收费,二是不灵活,没法自定义
聊天的协议例如微信 QQ之类都是自己定义的协议,服务器也是自己研发的,效率也会高一点,他们都是用的json作为通讯的数据格式,一个小公司去开发这些是不现实的,幸好有开源的XMPP协议,对应的服务器是openfire
XMPP协议的弊端在于数据格式用的早年比较流行的XML,所以传输的数据会稍多一点,不过现在网速已经提上去,这点基本上可以忽略不计
所以小公司用XMPP来做聊天是个不错的选择
环境搭建
服务段
openfire的下载地址
软件下载之后直接安装就行
注意的是 openfire需要的端口一定要对外开放
iOS端
XMPP只是一个协议,iOS有对应的实现
相应的类库可以在github下载
具体的添加步骤为
添加以下的文件夹到工程中
Authentication
Categories
Core
Utilities添加Vendor下面的CocoaLumberjack、CocoaAsyncSocket、KissXml、libidn文件夹道工程中,选择copy。
添加苹果的libxml2库 到工程文件中。
在Targets
-> BuildSettings
-> Search Paths
-> Header Search Paths
-> +
-> /usr/include/libxml2添加苹果的静态链接库 到工程文件中。
Targets
-> BuildSettings
-> Search Paths
-> Library Search Paths
-> +
-> $(PROJECT_DIR)/[项目名]/Lib/Lib-ObjectC/XMPPFramework/Vendor/libidn路径请根据自己实际的路径配置
添加苹果的动态链接库。
Target
-> Build Phases
-> Link Binary With Libraries
-> +
-> 选择CFNetwork.framework、libxml2.dylb、Security.framework、libresolv.dylib。
最后确保编译通过。如果用的swift在桥接头文件中添加引用
1 | #import "XMPP.h" |
iOS端(方法2)
上面的都不用配置 直接用pod引用
pod 添加依赖
1 | pod 'XMPPFramework' |
添加引用
1 | import XMPPFramework |
Build Settings中几种Search Paths
Framework Search Paths
主要搜索.framework文件Hearder Search Paths
主要搜索.h文件Library Search Paths
主要搜索.a文件