• xmpp登录(2)


    XMPP中常用对象们:

    XMPPStream:xmpp基础服务类

    XMPPRoster:好友列表类

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

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

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

    xmppvCardAvatarModule:好友头像

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

    XMPPRoom提供多用户聊天支持

    XMPPPubSub发布订阅

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

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



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

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


    连接服务器

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

    验证账号

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



  • 相关阅读:
    Xamarin.Forms之界面设计原则
    Xamarin.Forms之异步
    Xamarin Studio常见问题
    Xamarin.Forms之Button
    Xamarin.Forms之MessagingCenter
    Xamarin.Forms之Frame布局
    Xamarin.Forms之OnPlatform的使用
    2018/11/7 20:47:57
    2018/11/6
    2018/11/5 每日分析-test
  • 原文地址:https://www.cnblogs.com/yulang314/p/3705587.html
Copyright © 2020-2023  润新知