XMPP学习记录三:关于连接服务器

2014-11-24 03:04:28 · 作者: · 浏览: 1

XMPP中常用对象们:

XMPPStream:xmpp基础服务类

XMPPRoster:好友列表类

XMPPRosterCoreDataStorage:好友列表(用户账号)在core data中的操作类

XMPPvCardCoreDataStorage:好友名片(昵称,签名,性别,年龄等信息)在core data中的操作类

XMPPvCardTemp:好友名片实体类,从数据库里取出来的都是它

xmppvCardAvatarModule:好友头像

XMPPReconnect:如果失去连接,自动重连

XMPPRoom:提供多用户聊天支持

XMPPPubSub:发布订阅

第一步 生成xmppstream对象 并且设置委托

[cpp]
  1. -(void)setupStream{
  2. //初始化XMPPStream
  3. xmppStream = [[XMPPStream alloc] init];
  4. [xmppStream addDelegate:self delegateQueue:dispatch_get_current_queue()];
  5. }

    第二步 设置登陆帐户名字与服务器名字,并连接

    [cpp
    1. -(BOOL)connect{
    2. [self setupStream];
    3. //从本地取得用户名,密码和服务器地址
    4. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    5. NSString *userId = [defaults stringForKey:USERID];
    6. NSString *pass = [defaults stringForKey:PASS];
    7. NSString *server = [defaults stringForKey:SERVER];
    8. if (![xmppStream isDisconnected]) {
    9. return YES;
    10. }
    11. if (userId == nil || pass == nil) {
    12. return NO;
    13. }
    14. //设置用户
    15. [xmppStream setMyJID:[XMPPJID jidWithString:userId]];
    16. //设置服务器
    17. [xmppStream setHostName:server];
    18. //密码
    19. password = pass;
    20. //连接服务器
    21. NSError *error = nil;
    22. if (![xmppStream connect:&error]) {
    23. NSLog(@cant connect %@, server);
    24. return NO;
    25. }
    26. return YES;
    27. }
      连接服务器

      [cpp]
      1. //启动连接操作后,回调函数(委托函数)
      2. - (void)xmppStreamWillConnect:(XMPPStream *)sender将被调用,表示将要连接
      3. - (void)xmppStreamDidConnect:(XMPPStream *)sender//登陆服务器成功
      4. NSError *error = nil;
      5. //验证帐户密码
      6. NSString *password = @test1;
      7. BOOL bRes = [_xmppStream authenticateWithPassword:password error:&error];
      8. }

        验证账号
        [cpp]
        1. //验证成功的回调函数
        2. - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
        3. {
        4. XMPPPresence *presence = [XMPPPresencepresence];
        5. //可以加上上线状态,比如忙碌,在线等
        6. [[selfxmppStream] sendElement:presence];//发送上线通知
        7. }
        8. //验证失败的回调
        9. - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error