【问题标题】:iOS block user using XEP-0191iOS 阻止用户使用 XEP-0191
【发布时间】:2016-01-07 10:10:21
【问题描述】:

我正在 iOS 中开发聊天应用程序并使用 openfire xmpp 服务器?我正在尝试使用 XEP-0191 阻止用户:阻止命令但结果出错。

错误 xmlns="jabber:client" type="cancel" code="503" 服务不可用 xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"

【问题讨论】:

    标签: ios xmpp


    【解决方案1】:

    据我所知,openfier 不支持 XEP-0191 用于阻止用户。您需要实施 XEP-0016 隐私列表。 所以你必须使用创建隐私列表 这个方法。

    - (void)setListWithName:(NSString *)privacyListName items:(NSArray *)items fromUser:(NSString *)user

    你可以用下面的方法激活它

    - (void)setActiveListName:(NSString *)privacyListName;

    请参考

    How to block friend with xmpp in iOS?

    有关隐私列表的更多详细信息,请关注

    XEP-0016

    【讨论】:

      【解决方案2】:

      这对我有用。

      XMPPPrivacy  * xmppPrivacy =[[XMPPPrivacy alloc] initWithDispatchQueue:dispatch_get_main_queue()];
      [xmppPrivacy activate:[XmppGlobalClass sharedInstance].xmppStream];
      [xmppPrivacy addDelegate:self delegateQueue:dispatch_get_main_queue()];
      
      NSMutableArray * arraypriv = [[NSMutableArray alloc]init];
      
      
      NSMutableDictionary * privdict = [[NSMutableDictionary alloc] init];
      [privdict setValue:@"deny" forKey:@"action"];
      [privdict setValue:jid forKey:@"jid"];
      [arraypriv addObject:privdict];
      
      NSXMLElement *privacyElement;
      
      NSMutableArray *arrayPrivacy = [[NSMutableArray alloc] init];
      
      
          privacyElement = [XMPPPrivacy privacyItemWithType:@"jid" 
          value:[NSString stringWithFormat:@"%@@%@",[arraypriv 
          valueForKey:@"jid"],domainName] action:[NSString stringWithFormat:@"%@",[arraypriv valueForKey:@"action"]] order:0];
          [arrayPrivacy addObject:privacyElement];
      
      
      
      [XMPPPrivacy blockIQs:privacyElement];
      [XMPPPrivacy blockMessages:privacyElement];
      [XMPPPrivacy blockPresenceIn:privacyElement];
      [XMPPPrivacy blockPresenceOut:privacyElement];
      [xmppPrivacy setListWithName:@"public" items:arrayPrivacy];
      [xmppPrivacy setActiveListName:@"public"];
      

      然后你会在委托方法中收到被屏蔽的用户列表(在XEP-0016中),

      - (void)xmppPrivacy:(XMPPPrivacy *)sender didReceiveListWithName:(NSString *)name items:(NSArray *)items;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 2014-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        相关资源
        最近更新 更多