您的位置:首页 > 移动开发 > IOS开发

iOS-IM From XMPP.2 工程配置、#import <libxml/tree.h>、 @import libxmlSimu 错误处理

2016-01-20 14:00 741 查看
标签:

一个将要开发xmpp的项目,建议在项目刚创建就导入框架,这样可以避免一些自己操作失误造成不必要的损失。

xmpp中最常用的框架就是 xmppFrameWork
本文也会处理常见的@import
libxmlSimu; Module 'libxmlSimu' not found 的错误 和 #import <libxml/tree.h> not found错误

环境安装有一篇很好的文章,我就不写了:

xmpp整理笔记:环境的快速配置(附安装包) http://www.cnblogs.com/dsxniubility/p/4304570.html

第一种方法直接拖

1> 拖入文件夹

也可以直接去github下载。

这里有个特别严重的问题,就是最新版本的XMPPFramework 在下边的配置完毕后编译会报关于
@import libxmlSimu; Module 'libxmlSimu' not found 的错误
这里的解决办法我搜遍全网都没有找到,会想以前做项目的时候使用没有遇到这个问题,果断换了个老一点的版本,果然没有报错。。。
提供一个老版本下载的地方,点击前往,(功能上没有什么缺失,够用了)

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 <UIKit/UIKit.h>"



第二种方法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的主要解析框架
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: