【www.bbyears.com--ios】
xmpp中最常用的框架就是 xmppFrameWork
第一种方法直接拖
1> 拖入文件夹
在网盘链接的xmppFramework文件夹 :http://pan.baidu.com/s/1jGxLa3G
也可以直接去github搜索下载。
2> 拖入Sample_XMPPFramework.h,重命名为XMPPFramework.h
3> 添加框架
CFNetwork.framework
Security.framework
libxml2.dylib
libresolv.dylib
libin.a
4> 修改Build Settings
Header Search Paths
添加 "/usr/include/libxml2"
Other Linker Flags
添加 "-lxml2"
Library Search Paths
将"$(PROJECT_DIR)/01-仿QQ/Lib/XMPP/Vendor/libidn"
修改为"$(PROJECT_DIR)",并改为"recursive"
5> 修改XMPP/Core/XMPP.h
在文件顶部添加"#import "
第二种方法cocoapods
就是使用cocoapods 可以一次性导入,并且也不需要上述的配置和调整。并且以后更新框架的时候一个pod update完事。
但是有一个很严重的问题。就是你在导入框架pod install的时候会报错,出现一个 circular dependency 就是循环依赖。这是cocoapods的版本问题,cocoapods0.35版本会对xmppFramework框架造成循环依赖,解决的方法就是,将cocoapods的版本降到 0.34.4
终端操作指令如下:
1.卸载cocoapods
$ sudo gem uninstall cocoapods
2.安装xcodeproj
$ sudo gem install xcodeproj
3.安装指定版本0.34.4的cocoapods
$ sudo gem install cocoapods -v 0.34.4
但是这样很不爽啊,因为往后swift什么的编程全都需要cocoapods的版本保持最新0.35 甚至0.36. 所以这个降版本非常蛋疼,两种方法都能用。具体使用哪种,可根据自己喜好决定。反正我是选了第一种。
框架内的大致介绍
Authentication 授权,身份验证
Categories 分类
Core 核心
Extensions 扩展
Utilities 工具
Vendor 第三方库
在Extensions中:
CoreDataStorage coreData存储
Reconnect 重新连接
Roster 好友管理
有数据表 XMPPRoster 用来管理用户
管理用户的类 XMPPUserCoreDataStorageObject
SystemInputActivityMonitor 系统输入的活动监控
常用的模块:
XEP - 0009 RPC(类似黑客技术)
XEP - 0012 最后的活动(判断上线,离开断开)
XEP - 0045 多人聊天
XEP - 0054 名片-个人信息设置
XEP - 0065 sockets5字节流
XEP - 0066 二进制数据传输(特殊信息的发送)
XEP - 0085 聊天状态通知
XEP - 0136 聊天记录归档
其中有数据表 XMPPMessageArchiving
取出当前信息的类 XMPPMessageArchiving_Message_CoreDataObject
XEP - 0153 基于名片的头像
XEP - 0199 xmpp ping (用来ping服务器和ping自己)
XEP - 0335 json容器(可能以后某些信息传输将用json格式)
在core中:
XMPPElement 是一个基类 ,延展出三个子类
XMPPIQ 请求 (用户登录,用户注册,添加好友等)
XMPPMessage 消息(用来发各种消息等)
XMPPPresence 展现(用户上线下线提示等)
XMPPStream 流,非常常用,大部分类的加载都在写在流的懒加载里
在vender中:
kissXML 用于xml的主要解析框架
XMPP 简介和 XMPP 框架导入工程文件
原理介绍
简介
XMPP是一种基于标准通用标记语言的子集XML协议,具有超强的可拓展性。经过拓展的XMPP可以通过发送拓展的信息来处理用户需求。XMPP包含了正对服务端的软件协议,使之能够与另一个进行通话。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议。目前由IETF国际标准组织完成标准化工作。
标准化的核心分为两个部分
核心的XML流传输协议
基于XMLFreeEIM流传输的即时通讯扩展应用(这部分支持语音和视频)
优点:
开放,它是开放源码的,自由开放公开。
标准化,IETF 互联网工程工作小组标准化
成熟,第一个jabber技术是在1998年开发的,现在已经相当稳定
开始使用XMPPFramework
本文演示一个运行了XMPPFramework框架的项目demo,这不是一个成熟的应用,仅仅展示了框架的使用方法。本demo仅仅使用了框架的一部分功能。当你决定添加XMPP框架到你自己的IOS应用中,本文将提供详细的介绍。最好按照流程一步一步来,不要跳过某些步骤。
Setp1:
下载最新的代码
Step2
框架有几个依赖的文件,当你把XMPPFramework拿下来的时候,已经自动放在Vendor文件夹下面。我们将把每一个依赖文件过一遍。
第一个依赖包是CocoaLumberjack,它的位置:Vendor/CocoaLumberjack。拖进工程选择copy,确保项目能够编译。
Step3
第二个依赖包是CocoaAsyncSocket,它的位置:Vendor/CocoaAsyncSocket,拖进工程选择copy。
这个包需要你添加苹果的CFNetwork framework和Security framework。Target -> Build Phases -> Link Binary With Libraries -> + ->选择CFNetwork framework和Security framework。添加完后,确保项目能够编译。
Step4
第三个依赖包是KissXml,在Vendor/KissXML 可以找到。KissXML使用libxml2,你需要添加苹果的libxml2库 到工程文件中。在Targets->BuildSettings->Search Paths-> + ->/usr/include/libxml2。
libxml2.需要你添加苹果的CFNetwork framework和Security framework。Target -> Build Phases -> Link Binary With Libraries -> + ->选择libxml2.dylb。
添加完后,确保项目能够编译
Step5
第四个,也是最后一个依赖包是LIBLdn,添加下面的三个文件到Xcode工程文件
Vendor/libidn/idn-int.h
Vendor/libidn/stringprep.h
Vendor/libidn/libidn.a
最后一个文件是静态库,支持x86*64, i386, ppc, armv6, armv7指令集,因此比较大1.3M。但你的应用打包时,它只会解压你的应用需要用到的指令集对应的文件,所以不用担心应用程序文件变大。添加完成后,确保项目能够编译。
Step6
添加以下的文件夹到工程中
Authentication
Categories
Core
Utilities
Target -> Build Phases -> Link Binary With Libraries -> + ->选择libresolv.dylib,添加完后,确保项目能够编译。
现在你已经可以开始使用XMPPFramwork 在你的项目中,
以下页面你可以了解它的使用
https://github.com/robbiehanson/XMPPFramework/wiki/IntroToFramework
――――――――――――――――――――我是分割线――――――――――――――――――――
最后吐槽一下这个 XMPP GettingStart 介绍页, 明明三言两语就能说清楚的,罗里吧嗦一大堆。
最后我自己的整理版本是这样的:
添加以下的文件夹到工程中
Authentication
Categories
Core
Utilities
添加Vendor下面的CocoaLumberjack、CocoaAsyncSocket、KissXml、LIBLdn文件夹道工程中,选择copy。
添加苹果的libxml2库 到工程文件中。在Targets->BuildSettings->Search Paths-> + ->/usr/include/libxml2
添加苹果的动态链接库。Target -> Build Phases -> Link Binary With Libraries -> + ->选择CFNetwork framework、libxml2.dylb、Security framework、libresolv.dylib。
最后确保编译通过。