红黑联盟

网页木马,木马程序,渗透测试,信息泄露,网络嗅探

xmpp获取好友聊天记录的简单介绍

本文目录一览:

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);

}

openfire服务器端是否保存聊天记录

不保存的,openfire只保存离线的消息,例如用户不线 你发送消息后会保存,如果正常发送的消息根本没有保存,可以自己修改源码或者写插件

如何用java代码调用xmpp用户信息

创建连接的时候添加监听,根据监听里设置的PacketFilter 获取到Packet包,就可以取到相应的信息了。

你获取到的Packet内容本质上是一段xml信息。

代码类似于:

PacketFilter filter = new PacketTypeFilter(Message.class);

PacketListener myListener = new PacketListener() {

public void processPacket(Packet packet) {

if(packet instanceof Message){

Message msg = (Message) packet;

// TODO something .....

}

}

}

connection.addPacketListener(myListener, filter);

不知道是不是你想要的答案。

ios怎样在xmpp自带的数据库里面插入数据

点击登录之后,验证成功就会跳到好友页面。这个时候需要显示你已经有的好友。

那么在tableViewCell中显示好友姓名,需要数据源,数据源从服务器获看你是否有好友,检索到你的好友后把他显示在列表上。

xmpp中管理好友的类是 XMPPRoster,并且使用coredata来储存好友,达到数据持久化的效果。

那么我们可以将获取储存好友的仓库和xmppRoster对象的初始化封装在XMPPManager中。

在.h文件中声明:

//好友管理

@property(nonatomic,strong)XMPPRoster xmppRoster;

遵循代理:

@interface XMPPManager : NSObjectXMPPStreamDelegate,XMPPRosterDelegate

在 .m文件中重写init方法中:

//2.好友管理//获得一个存储好友的CoreData仓库,用来数据持久化 XMPPRosterCoreDataStorage rosterCoreDataStorage = [XMPPRosterCoreDataStorage sharedInstance];//初始化xmppRoster self.xmppRoster = [[XMPPRoster alloc]initWithRosterStorage:rosterCoreDataStorage dispatchQueue:dispatch_get_main_queue()];//激活 [self.xmppRoster activate:self.xmppStream];//设置代理 [self.xmppRoster addDelegate:self delegateQueue:dispatch_get_main_queue()];

接收好友请求。

将接收到好友请求的方法也封装在XMPPManager中:

// 收到好友请求执行的方法-(void)xmppRoster:(XMPPRoster )sender didReceivePresenceSubscriptionRequest:(XMPPPresence )presence{ self.fromJid = presence.from; UIAlertView alert = [[UIAlertView alloc]initWithTitle:@"提示:有人添加你" message:presence.from.user delegate:self cancelButtonTitle:@"拒绝" otherButtonTitles:@"OK", nil]; [alert show];}

-(void)alertView:(UIAlertView )alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ switch (buttonIndex) { case 0: [self.xmppRoster rejectPresenceSubscriptionRequestFrom:self.fromJid]; break; case 1: [self.xmppRoster acceptPresenceSubscriptionRequestFrom:self.fromJid andAddToRoster:YES]; break; default: break; }}

添加好友,添加的好友必须是服务器上存在的用户,需要看对方是否同意。对方同意之后,刷新好友列表,显示出来,同时在服务器上也要添加,这里服务器上用的是coredata来存储个人的好友信息。

好友页面实现文件,遵循代理,数据源数组

在viewDidLoad中完成初始化数组,设置代理和添加好友按钮

这里简化了添加好友,写死了只能添加“张三”,如果需要添加更多,可以写成借口

接下来是tableview数据源代理方法

tableview

这时候数组明显是没有jid对象的。获取jid对象是在XMPPPRoster代理方法中实现的:

pragma mark xmppRoster 的代理方法

pragma mark 开始检索好友列表的方法-(void)xmppRosterDidBeginPopulating:(XMPPRoster *)sender{ NSLog(@"开始检索好友列表");}

pragma mark 正在检索好友列表的方法-(void)xmppRoster:(XMPPRoster )sender didRecieveRosterItem:(DDXMLElement )item{ NSLog(@"每一个好友都会走一次这个方法");//获得item的属性里的jid字符串,再通过它获得jid对象 NSString jidStr = [[item attributeForName:@"jid"] stringValue]; XMPPJID jid = [XMPPJID jidWithString:jidStr];//是否已经添加 if ([self.rosterJids containsObject:jid]) { return; }//将好友添加到数组中去 [self.rosterJids addObject:jid];//添加完数据要更新UI(表视图更新) NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.rosterJids.count-1 inSection:0]; [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];}

pragma mark 好友列表检索完毕的方法-(void)xmppRosterDidEndPopulating:(XMPPRoster )sender{ NSLog(@"好友列表检索完毕");}

4. 删除好友。列表删除,数组删除,服务器删除。

pragma mark 删除好友执行的方法-(void)tableView:(UITableView )tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath )indexPath{ if (editingStyle==UITableViewCellEditingStyleDelete) { //找到要删除的人 XMPPJID jid = self.rosterJids[indexPath.row];//从数组中删除 [self.rosterJids removeObjectAtIndex:indexPath.row];//从Ui单元格删除 [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic ];//从服务器删除 [[XMPPManager defaultManager].xmppRoster removeUser:jid]; }}

5.进入聊天页面

  • 评论列表:
  •  鹿岛沐白
     发布于 2022-11-12 02:05:28  回复该评论
  • ace XMPPManager : NSObjectXMPPStreamDelegate,XMPPRosterDelegate在 .m文件中重写init方法中://2.好友管理//
  •  莣萳卮留
     发布于 2022-11-11 19:03:44  回复该评论
  • erCoreDataStorage sharedInstance];//初始化xmppRoster self.xmppRoster = [[XMPPRoster alloc]initWithRosterStorage:rosterCoreDataStorage dispatchQueue:di
  •  美咩清晓
     发布于 2022-11-11 20:03:14  回复该评论
  • stringValue]; XMPPJID jid = [XMPPJID jidWithString:jidStr];//是否已经添加 if ([self.rosterJids
  •  听弧颜于
     发布于 2022-11-12 04:03:32  回复该评论
  • XMPPPresence )presence{ self.fromJid = presence.from; UIAlertView alert = [[UIAlertView alloc]initWithTitle:@"提示

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.