如何在QuickBlox中阻止用户?

har*_*esh 6 chat xmpp privacy ios quickblox

我正在创建一个基于聊天的Application on QuickBloxFramework,我希望在App中有一个块功能.我读了一些像XMPP和QuickBlox.但没有得到任何帮助.

有一些逻辑维持QBPrivacyList不允许其他用户发送消息并阻止它但我没有成功.

这是我如何维护隐私列表的代码片段.

  1. @"public"在聊天方法登录时使用姓名获取隐私列表

    [[QBChat instance] retrievePrivacyListWithName:@"public"];
    
    Run Code Online (Sandbox Code Playgroud)

    因此,如果已经创建了隐私列表,"public"则会在委托方法中获取它

      - (void)chatDidReceivePrivacyList:(QBPrivacyList *)privacyList{
             NSLog(@"chatDidReceivePrivacyList: %@", privacyList);
             _blockPrivacyList = privacyList; // Save its instance for further add more users in list
        }
    
    Run Code Online (Sandbox Code Playgroud)

    //响应是

    [PrivacyList name: public]items:("type: USER_ID valueForType: 2075213 action: deny")

  2. 这是如何在隐私列表中添加其他成员

    - (void)blockUserWithQBId:(NSUInteger)qbID
    {
    
            QBPrivacyItem *item = [[QBPrivacyItem alloc] initWithType:USER_ID valueForType:qbID action:DENY];
    
            if (_blockPrivacyList) {
                  [_blockPrivacyList addObject:item]; // add new user if already privacy list is there
             }else
            _blockPrivacyList = [[QBPrivacyList alloc] initWithName:@"public" items:@[item]]; // create new privacy list if not before created
    
           [[QBChat instance] setPrivacyList:_blockPrivacyList];
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

    并且所有委托方法都可以完美地创建并添加隐私列表中的成员.

    - (void)chatDidSetPrivacyListWithName:(NSString *)name{
      NSLog(@"chatDidSetPrivacyListWithName %@", name);
      [[QBChat instance] setDefaultPrivacyListWithName:name]; // set it as default privacy list
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 即使我杀了应用程序或为同一用户重新安装它,我也能完美地获得此隐私列表.所以我的隐私列表代码工作正常

但是我的DENY隐私列表中的其他成员可以向我发送消息.根据http://quickblox.com/developers/SimpleSample-chat_users-ios#Contact_list中的文档,它应该给出错误

 "error:Error Domain=com.quickblox.chat Code=503 "Service not available."
Run Code Online (Sandbox Code Playgroud)

因此,如果所有隐私列表都完美无缺,那么我的被阻止用户如何向我发送消息?

我合作过XMPPiOS同样的问题也存在,如果你可以给XMPP逻辑也将作为QuickBlox作为QuickBlox实际使用XMPP本身.

有什么建议吗?

har*_*esh 3

终于找到了它的解决方案。我在问题中所写的流程和逻辑是完美的。我只保留了激活隐私列表的一个小功能。不知道为什么QuickBlox没有在他们的演示中编写该函数调用。

    [[QBChat instance] setActivePrivacyListWithName:@"public"];
Run Code Online (Sandbox Code Playgroud)

同样在 XMPP 中,我们需要维护隐私列表并同时激活单个隐私。