【问题标题】:Accept buddy request in xmpp client iphone在 xmpp 客户端 iphone 中接受好友请求
【发布时间】:2012-03-30 21:32:09
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: iphone xmppframework


    【解决方案1】:

    您将在 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];
    

    希望对你有帮助:)

    【讨论】:

      【解决方案2】:

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

      代码如下:

      - (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 对我帮助很大之后,我能够分享一些对用户有价值的东西。

      【讨论】:

      • 您将收到好友名称以及出席类型,在那里您可以处理接受或拒绝,并在 didSendPresence 方法中将出席类型命令发送给该特定用户
      • @obaid,你好。感谢您的代码。你能在这里澄清一下_chatDelegate 是什么吗?以及如何接收和接受好友请求?
      • 实际上我已经离开这个 xmpp 库从过去 1 年开始,但我记得 _chatDelegate 可能是从 xmppStream 类继承的,或者我已经创建了那个自定义方法。但可以肯定的是这里的 _chatDelegate 方法 - 用于重新加载联系人列表并使该特定联系人在线显示
      【解决方案3】:

      U 不会在单独的函数中接收请求。每当好友上线或发送请求时,都会调用您的 didReceivePresence 委托函数。如果您获得出席类型 = 订阅,则它是 buddyrequest。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-28
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        • 2013-07-17
        相关资源
        最近更新 更多