在xmpp客户端iphone中接受好友请求

时间:2012-03-14 12:10:36

标签: iphone xmppframework

我正在为iphone开发一个xmpp客户端。我能够发送和接收消息。我想在不提示用户的情况下自动接受好友请求。我将在哪个功能中收到请求。请给我任何提示。

提前致谢。

3 个答案:

答案 0 :(得分:7)

好的,我有一个完美的答案给你!

以下是代码:

- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence {

    // a buddy went offline/online

    NSString *presenceType = [presence type];            // online/offline
    NSString *myUsername = [[sender myJID] user];
    NSString *presenceFromUser = [[presence from] user];

    if (![presenceFromUser isEqualToString:myUsername]) {

        if ([presenceType isEqualToString:@"available"]) {

            [_chatDelegate newBuddyOnline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]];
               NSLog(@"presence user is %@",presenceFromUser);

        } 

        else if  ([presenceType isEqualToString:@"unavailable"]) {

            [_chatDelegate buddyWentOffline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]];
            NSLog(@"presence user is invisible %@",presenceFromUser);

        }
        else if  ([presenceType isEqualToString:@"subscribe"]) {

            [_chatDelegate newBuddyOnline:[NSString stringWithFormat:@"%@@%@", presenceFromUser, kHostName]];
                        NSLog(@"presence user wants to subscribe %@",presenceFromUser);

        }

    }
}

我为您提供了完整的DidReceivePresence方法代码,以便您更好地理解。

现在让我用代码解释一下。如果你注意到else if条件我正在比较我们收到的值(元素)。因此,当我将字符串作为订阅时(当用户发送好友请求时),您只需要在tableview好友列表中添加该特定用户。

您可以从“presenceFromUser”获取用户名。

如果您需要了解更多信息,请发送电子邮件至blueobaid@gmail.com,因为当您回复我的答案时我没有收到提醒,但我会回来并在此回复,以便它也可以帮助其他人!我将很快在http://Czartechnogeeks.com/iSolutions

上发布一个教程

我很高兴能够在帮助我之后用stackoverflow分享对用户有价值的东西。

答案 1 :(得分:4)

U不会在单独的功能中收到请求。每当好友上线或发送请求时,都会调用didReceivePresence委托函数。如果你得到存在类型=订阅那么它是buddyrequest。希望这会对你有所帮助。

答案 2 :(得分:2)

您将收到功能 didReceivePresence

的订阅

要接受订阅,您可以使用以下代码:

  NSXMLElement *presence = [NSXMLElement elementWithName:@"presence"];
  [presence addAttributeWithName:@"type" stringValue:@"subscribed"];
  [presence addAttributeWithName:@"to" stringValue:[presence fromStr]];
  [presence addAttributeWithName:@"from" stringValue:@"you@host"];
  [[self xmppStream] sendElement:presence];

可能有帮助:)