iOS的XMPPFramework简单介绍(实现及时通信)

2020-01-18 17:15:28于海丽

3.2添加好友


 //name为用户账号
  - (void)XMPPAddFriendSubscribe:(NSString *)name
  {
    //XMPPHOST 就是服务器名, 主机名
    XMPPJID *jid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",name,XMPPHOST]];
    //[presence addAttributeWithName:@"subscription" stringValue:@"好友"];
    [xmppRoster subscribePresenceToUser:jid];
     
  }

3.3收到添加好友的请求


 - (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence
  {
    //取得好友状态
    NSString *presenceType = [NSString stringWithFormat:@"%@", [presence type]]; //online/offline
    //请求的用户
    NSString *presenceFromUser =[NSString stringWithFormat:@"%@", [[presence from] user]];
    NSLog(@"presenceType:%@",presenceType);
     
    NSLog(@"presence2:%@ sender2:%@",presence,sender);
     
    XMPPJID *jid = [XMPPJID jidWithString:presenceFromUser];
    //接收添加好友请求
    [xmppRoster acceptPresenceSubscriptionRequestFrom:jid andAddToRoster:YES];
     
  }

3.4删除好友


//删除好友,name为好友账号
- (void)removeBuddy:(NSString *)name 
{ 
  XMPPJID *jid = [XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",name,XMPPHOST]]; 
    
  [self xmppRoster] removeUser:jid]; 
}

4. 聊天室

初始化聊天室


XMPPJID *roomJID = [XMPPJID jidWithString:ROOM_JID];
   
  xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:self jid:roomJID];
   
  [xmppRoom activate:xmppStream];
  [xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];

创建聊天室成功


- (void)xmppRoomDidCreate:(XMPPRoom *)sender
  {
    DDLogInfo(@"%@: %@", THIS_FILE, THIS_METHOD);
  }

加入聊天室,使用昵称


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

获取聊天室信息


  - (void)xmppRoomDidJoin:(XMPPRoom *)sender
  {
    [xmppRoom fetchConfigurationForm];
    [xmppRoom fetchBanList];
    [xmppRoom fetchMembersList];
    [xmppRoom fetchModeratorsList];
  }

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


 // 收到禁止名单列表
  - (void)xmppRoom:(XMPPRoom *)sender didFetchBanList:(NSArray *)items;
  // 收到好友名单列表
  - (void)xmppRoom:(XMPPRoom *)sender didFetchMembersList:(NSArray *)items;
  // 收到主持人名单列表
  - (void)xmppRoom:(XMPPRoom *)sender didFetchModeratorsList:(NSArray *)items;

房间不存在,调用委托


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