如何在QuickBlox中阻止用户?

时间:2014-12-27 08:59:28

标签: ios xmpp chat quickblox privacy

我正在QuickBlox框架上创建基于聊天的应用程序,我希望在应用程序中有一个阻止功能。我读了一些像XMPP和QuickBlox这样的文档。但没有得到任何帮助。

有一些维护QBPrivacyList的逻辑是不允许其他用户发送消息并阻止它但我没有成功使用它。

这是我维护隐私列表的代码段。

  1. 在聊天登录方法

    中获取名称为@"public"的隐私列表
    [[QBChat instance] retrievePrivacyListWithName:@"public"];
    

    因此,如果已经创建了名为"public"的隐私列表,则会在委托方法

    中获取它
      - (void)chatDidReceivePrivacyList:(QBPrivacyList *)privacyList{
             NSLog(@"chatDidReceivePrivacyList: %@", privacyList);
             _blockPrivacyList = privacyList; // Save its instance for further add more users in list
        }
    

    //响应是

    [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];
    
    }
    

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

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

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

     "error:Error Domain=com.quickblox.chat Code=503 "Service not available."
    

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

    我曾在XMPP中与iOS合作,如果您可以将XMPP逻辑作为QuickBlox作为QuickBlox,那么同样存在同样的问题实际上使用XMPP本身。

    对此有何建议?

2 个答案:

答案 0 :(得分:3)

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

    [[QBChat instance] setActivePrivacyListWithName:@"public"];

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

答案 1 :(得分:1)

你的逻辑是正确的

您是否设置了名称" public"作为默认的? http://quickblox.com/developers/SimpleSample-chat_users-ios#Activate_a_privacy_list

没有它它就不会工作