我正在QuickBlox
框架上创建基于聊天的应用程序,我希望在应用程序中有一个阻止功能。我读了一些像XMPP和QuickBlox
这样的文档。但没有得到任何帮助。
有一些维护QBPrivacyList
的逻辑是不允许其他用户发送消息并阻止它但我没有成功使用它。
这是我维护隐私列表的代码段。
在聊天登录方法
中获取名称为@"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"
)
这是如何在隐私列表中添加其他成员
- (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
}
即使我杀了应用程序或为同一用户重新安装,我也能完美地获得此隐私列表。 所以我的隐私列表代码工作正常
但是我的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
本身。
对此有何建议?
答案 0 :(得分:3)
终于找到了解决方案。
我在问题中写的流程和逻辑是完美的。我只剩下一个小功能来激活隐私列表。
不知道为什么QuickBlox
没有在他们的演示中编写该函数调用。
[[QBChat instance] setActivePrivacyListWithName:@"public"];
在XMPP中,我们需要维护隐私列表并一次激活单个隐私。
答案 1 :(得分:1)
你的逻辑是正确的
您是否设置了名称" public"作为默认的? http://quickblox.com/developers/SimpleSample-chat_users-ios#Activate_a_privacy_list
没有它它就不会工作