ios开发中xmpp,ios开发中的框架有哪些

iOS中利用XMPP怎么实现好友添加与获取好友列表

主要用的类有:

专注于为中小企业提供成都网站制作、成都网站建设、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业两当免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

Roster 可以理解为好友花名册,提供创建删除获取列表等功能Roster.SubscriptionMode 这个在建立链接的时候使用,我的理解就是设置接收请求的模式,有三种,我们项目用的是SubscriptionMode.manual 也就是手动处理。

Presence 有关好友的推送消息,都是Presence包

Presence.Type 有7个Type,包含了好友上线下线、添加删除好友及错误信息的Type

PacketFilter 过滤器,此功能中主要实现过滤出Presence

PacketListener 看名字就知道,Packet监听,可以监听到服务端发来的所有信息。因为xmpp发的包都是它的子类~

ios 开发升级X-code 7 以后使用XMPP的时候报错

注释掉就好了。

这个是个宏定义的判断,只在MAC OSX10.5以下有效,现在都10.11了,这个注释掉完全不影响,而且你开发的是手机应用,更不影响了。

iOS怎么搭建xmpp聊天

iOS 搭建xmpp聊天的具体步骤如下:

聊天室

[cpp] view plain copy

print?

//初始化聊天室

XMPPJID *roomJID = [XMPPJID jidWithString:ROOM_JID];

xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:self jid:roomJID];

[xmppRoom activate:xmppStream];

[xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];

[cpp] view plain copy

print?

//创建聊天室成功

- (void)xmppRoomDidCreate:(XMPPRoom *)sender

{

DDLogInfo(@"%@: %@", THIS_FILE, THIS_METHOD);

}

[cpp] view plain copy

print?

//加入聊天室,使用昵称

[xmppRoom joinRoomUsingNickname:@"quack" history:nil];

[cpp] view plain copy

print?

//获取聊天室信息

- (void)xmppRoomDidJoin:(XMPPRoom *)sender

{

[xmppRoom fetchConfigurationForm];

[xmppRoom fetchBanList];

[xmppRoom fetchMembersList];

[xmppRoom fetchModeratorsList];

}

如果房间存在,会调用委托

[cpp] view plain copy

print?

// 收到禁止名单列表

- (void)xmppRoom:(XMPPRoom *)sender didFetchBanList:(NSArray *)items;

// 收到好友名单列表

- (void)xmppRoom:(XMPPRoom *)sender didFetchMembersList:(NSArray *)items;

// 收到主持人名单列表

- (void)xmppRoom:(XMPPRoom *)sender didFetchModeratorsList:(NSArray *)items;

房间不存在,调用委托

[cpp] view plain copy

print?

- (void)xmppRoom:(XMPPRoom *)sender didNotFetchBanList:(XMPPIQ *)iqError;

- (void)xmppRoom:(XMPPRoom *)sender didNotFetchMembersList:(XMPPIQ *)iqError;

- (void)xmppRoom:(XMPPRoom *)sender didNotFetchModeratorsList:(XMPPIQ *)iqError;

离开房间

[cpp] view plain copy

print?

[xmppRoom deactivate:xmppStream];

[cpp] view plain copy

print?

//离开聊天室

- (void)xmppRoomDidLeave:(XMPPRoom *)sender

{

DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);

}

其他代理

[cpp] view plain copy

print?

//新人加入群聊

- (void)xmppRoom:(XMPPRoom *)sender occupantDidJoin:(XMPPJID *)occupantJID

{

DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);

}

//有人退出群聊

- (void)xmppRoom:(XMPPRoom *)sender occupantDidLeave:(XMPPJID *)occupantJID

{

DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);

}

//有人在群里发言

- (void)xmppRoom:(XMPPRoom *)sender didReceiveMessage:(XMPPMessage *)message fromOccupant:(XMPPJID *)occupantJID

{

DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);

}

在ios中怎样使用xmpp来主动查询某一好友是否在线

iOS无法做到这一点,

因为IOS的应用程序并不知道自身是否被系统KILL掉,

比如QQ,在好友KILL掉QQ程序以后, 你依然无法知道他是否下线, 他的头像依然显示在线.

除非应用内有一个动作:退出登录, 并且用户通过点击"退出登录"来主动退出应用, 服务器才能得知他是否下线。

iOS XMPP怎么实现语音聊天

两种处理方式

1、将获取到的音频文件通过base64加密直接通过xmpp的消息体发送过去,然后解码;

2、通过http请求的方式将音频文件上传到服务器,然后将音频文件的下载地址通过xmpp消息体发送过去,另外一个客户端下载。

音频文件建议转码为amr,这种格式的音频文件比较小。

ios socket和xmpp哪个好

socket是套接字,在你的语境下,多指传输层网络接口。

webSocket,是一个应用层协议,说的是,目前浏览器实现的一套通信协议,用来解决之前HTTP,请求响应模型不合适的场合。

XMPP,是一个应用层协议,协议基于XML结构设计。

其实websocket是socket的简约实现,与socket相比,可以节省额外的端口占用,直接使用一个公网域名访问。另外协议对报文的流量消耗做了优化。xmpp与websocket比也是比较臃肿的

xmpp是im的使用比较广泛的协议,早期的手机端推送为了省事就用的这种协议,但是后来发现这种协议比较臃肿耗流量,而且对服务器要求比较高


网站栏目:ios开发中xmpp,ios开发中的框架有哪些
分享网址:http://cdiso.cn/article/phidee.html

其他资讯