美文网首页
XMPPFramework(三)好友添加与接受

XMPPFramework(三)好友添加与接受

作者: O乞力马扎罗的雪O | 来源:发表于2018-06-28 16:11 被阅读0次

    添加好友

    加好友其实就是和别人建立关系,也就是xmpp的订阅,那么我们就要找个方法和别人发生点什么~ ~ ~ 那就是下面这个方法了:

     XMPPJID *jid = [XMPPJID jidWithUser:self.friendSearchTextField.text domain:KDomin resource:kResource];
      [[XMPPManager sharedInstance].roster subscribePresenceToUser:jid];
    

    这里的roster是XMPPRoster的一个实例,要在初始化的时候激活

    //实例化XMPPRoster
    self.roseterDataStorage = [XMPPRosterCoreDataStorage sharedInstance];
    self.roster = [[XMPPRoster alloc]initWithRosterStorage:self.roseterDataStorage dispatchQueue:dispatch_get_main_queue()];
    //激活
    [self.roster activate:self.stream];
    [self.roster addDelegate:self delegateQueue:dispatch_get_main_queue()];
    

    同意/拒绝好友请求

    好了,约会请求已经发送了,那么小姐姐是如何收到你的约会邀请的呢?
    在xmppRosterDelegate代理方法里有这么一个方法

    - (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence
    {
        //好友申请,from:发送好友的jid
        self.subscrptionRequestJID = presence.from;
        
        UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"添加好友申请" message:presence.from.user delegate:self cancelButtonTitle:@"拒绝" otherButtonTitles:@"同意并添加对方", nil];
        [alertview show];
        //在alertview的代理方法中处理添加请求
     }
    
    #pragma mark --UIAlertViewDelegate
    
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
        switch (buttonIndex) {
            case 0:
                //拒绝
                [self.roster rejectPresenceSubscriptionRequestFrom:self.subscrptionRequestJID];
                break;
            case 1:
                //同意
                 [self.roster acceptPresenceSubscriptionRequestFrom:self.subscrptionRequestJID andAddToRoster:YES];
                
            default:
                break;
        }
        self.subscrptionRequestJID = nil;
    }
    

    收到对方处理回执

    到这里有人肯定要问了:说小姐姐到底跟我约不约啊,我咋知道呢?
    在XMPPStreamDelegate里有这么个方法,当别人在线状态改变,或者接受,婉拒了你的请求,它会收到通知

    - (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence
     {
         //上线状态 - "available"
         //离线状态 - "unavailable"
         //同意 - "subscribed"
         //拒绝 - "unsubscribed"
    
         if ([presence.type isEqualToString:@"subscribed"]) {
             [self showAlertWithTitle:[NSString stringWithFormat:@"%@同意了您的请求",presence.from.user]];
             //刷新列表
         }else if ([presence.type isEqualToString:@"unsubscribed"]) {
             [self showAlertWithTitle:[NSString stringWithFormat:@"%@拒绝了您的请求",presence.from.user]];
         }
    
     }
    

    好了,到这里差不多就大结局了! 啥?你说啥?
    "大结局后通常应该有点彩蛋"
    "哦,那我准备一下"

    //其实吧添加好友还有这么一个方法
    [[XMPPManager sharedInstance].roster addUser:jid withNickname:jid.user]
    

    相关文章

      网友评论

          本文标题:XMPPFramework(三)好友添加与接受

          本文链接:https://www.haomeiwen.com/subject/zyigyftx.html