【iOS XMPP】使用XMPPFramewok(一):添加XMPPFramework(XCode 4.6.2)

转自:http://www.cnblogs.com/dyingbleed/archive/2013/05/09/3069145.html

XMPPFramework

GitHub: https://github.com/robbiehanson/XMPPFramework

获取源代码

git clone https://github.com/robbiehanson/XMPPFramework.git

checkout XMPPFramework 一个最新的 branch

添加依赖

> 拷贝 <XMPPFramework>/Vendor/CocoaLumberjack 到项目根目录下,add files...,选择 CocoaLumberjack 文件夹

> 同样的步骤,拷贝 CocoaAsyncSocket 和 KissXML 并添加到项目中

CocoaAsyncSocket 依赖 CFNetwork.framework 和 Security.framework,在 TARGETS -> Build Phases -> Link Binary With Libraries 添加

KissXML 使用了 libxml2 解析 XML,所以

首先,我们需要在 TARGETS -> Build Phases -> Link Binary With Libraries 添加 libXML2.dylib

然后,在 TARGETS -> Build Settings -> Other Linker Flags 添加 -lxml2,TARGETS -> Build Settings -> Header Search Paths 添加 /usr/include/libxml2

> 拷贝 <XMPPFramework>/Vendor/libidn 到项目根目录下,添加静态库文件 libidn.a 和头文件 idn-int.h 和 stringprep.h

添加 XMPPFramework

拷贝源码目录下的 Authentication Categories Core 和 Utilities 到项目根目录下并添加到项目中

此外,需要添加动态连接库 libresolv.dylib ,在 TARGETS -> Build Phases -> Link Binary With Libraries 添加

添加扩展

你可以根据自己的需要,添加 <XMPPFramework>/Extensions 的扩展到项目中

你可能遇到的问题:

> "XMPPFramework.h" file not found

XMPPFramework.h 内容如下,可根据实际使用模块进行删改:

#import "XMPP.h"

// List the modules you‘re using here.

#import "XMPPReconnect.h"

#import "XMPPRoster.h"
#import "XMPPRosterCoreDataStorage.h"

#import "XMPPvCardTempModule.h"
#import "XMPPvCardAvatarModule.h"
#import "XMPPvCardCoreDataStorage.h"

#import "XMPPCapabilities.h"
#import "XMPPCapabilitiesCoreDataStorage.h"

#import "XMPPMUC.h"
#import "XMPPRoomCoreDataStorage.h"

还有一些问题,是由于没有添加Extension需要的依赖库所产生的

可在 TARGETS -> Build Phases -> Link Binary With Libraries 添加

CoreData.framework SystemConfiguration.framework CoreLocation.framework

ARC 警告

XMPPFramework 使用 ARC,如果你的项目没有使用 ARC,build 之后你会得到许许多多的 ARC 警告。

不要忽视这些警告,它会导致你的程序因 memory leak 而崩溃……

Edit -> Refactor -> convert to Objective-C ARC,消灭这些警告!

参考: https://github.com/robbiehanson/XMPPFramework/wiki/GettingStarted_iOS

时间: 2024-11-08 23:11:20

【iOS XMPP】使用XMPPFramewok(一):添加XMPPFramework(XCode 4.6.2)的相关文章

iOS XMPP:添加XMPPFramework及其他框架(三)

XMPPFramework GitHub: https://github.com/robbiehanson/XMPPFramework 获取源代码 git clone https://github.com/robbiehanson/XMPPFramework.git checkout XMPPFramework 一个最新的 branch 添加依赖 > 拷贝 <XMPPFramework>/Vendor/CocoaLumberjack 到项目根目录下,add files...,选择 Coc

【iOS XMPP】使用XMPPFramewok之好友列表

好友列表 好友列表,在 XMPP 中被称为 roster,花名册? 获取 roster 需要客户端发送 <iq /> 标签向 XMPP 服务器端查询 一个 IQ 请求: <iq type="get" from="[email protected]" to="example.com" id="1234567"> <query xmlns="jabber:iq:roster"/&g

iOS开发系列一开发环境与Xcode介绍

一.开发准备 为了开发iOS应用,你需要: 1.硬件要求:一台mac电脑,苹果系统占用内存比较高,电脑配置尽量选择相对较好的, 如:cpu双核,内存8G,还有真机测试尽量iphone5+ 2.软件环境要求 如果可以尽量保持系统最新,如:OS X 10.9.3+ Xcode 6.0+尽量最新版,一般要去appstore去下载. iOS SDK 应用开发必须要使用Xcode,Xcode苹果的集成开发环境包括,源码编辑器.图形用户界面编辑器,以及其它特性,SDK提供了开发应用的一些基础框架,工具,你需

iOS开发项目篇—04添加导航栏的按钮

iOS开发项目篇—04添加导航栏的按钮 一.设置导航栏的按钮 要求实现的效果:             说明:默认状态下和高亮状态下的图片是不一样的. 按钮的图片需要设置默认状态和高亮状态时的显示,系统了提供的下面方法 viewController.navigationItem.leftBarButtonItem=[UIBarButtonItem alloc]initWithImage:<#(UIImage *)#> style:<#(UIBarButtonItemStyle)#>

iOS开发项目篇—02添加子控制器以及项目分层

iOS开发项目篇—02添加子控制器以及项目分层 一.添加子控制器 1.设置根控制器(自定义) 说明:分析新浪微博应用,观察其整体建构层次.而系统的控制器不能满足项目开发的需求,这里把项目中原有的控制器删除. 自己定义一个TabBarViewController类.让这个类作为window窗口的根控制器. YYAppDelegate.m文件代码: 1 #import "YYAppDelegate.h" 2 #import "YYTabBarViewController.h&qu

iOS开发项目篇—03添加导航控制器

iOS开发项目篇—03添加导航控制器 一.简单说明 分析:分析微博应用,我们需要给每个子控制器都添加一个导航控制器(每个子控制器的导航不一样),所以需要新建一个导航控制器,然后把该导航控制器作为window的根控制器,添加的四个子控制器,分别添加在导航控制器上,也就是说整个项目采用当前主流的UI框架,一个UITabBarController管理着四个UINavigationController,而每个UINavigationController则分别管理着“首页”.“消息”.“发现”和“我”这四

iOS xmpp协议实现聊天之openfire的服务端配置(一)

今天弄这个openfire服务端的配置直接苦了一逼,不过好在最后终于配置好了.首先感谢@月光的尽头的博客给了我莫大的帮助.切入正题,首先说一下iOS xmpp协议实现聊天openfire服务器配置所需要的东西: 1.openfire软件,我用的是 Openfire 3.9.3,下载地址:http://www.igniterealtime.org/downloads/index.jsp 2.MySql数据库,我用的是mysql-5.1.63,下载地址:http://dev.mysql.com/do

ios runtime 动态向类添加方法

1.定义C函数: void dynamicMethodIMP(id self, SEL _cmd) { NSLog(@"蜗牛也疯狂"); } 2.重写函数+(BOOL)resolveInstanceMethod:(SEL)sel +(BOOL)resolveInstanceMethod:(SEL)sel { class_addMethod([self class], sel, (IMP)dynamicMethodIMP, "[email protected]:");

iOS 开发之 为UIButton添加类别方法加载网络图片

iOS 开发之 为UIButton添加类别方法加载网络图片 使用GCD线程队列实现 工程如下: UIButton+WebCache.h #import <UIKit/UIKit.h> // 为Button添加类别方法 @interface UIButton (WebCache) - (void)xr_setButtonImageWithUrl:(NSString *)urlStr; @end UIButton+WebCache.m #import "UIButton+WebCache