【发布时间】: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 中开发聊天应用程序并使用 openfire xmpp 服务器?我正在尝试使用 XEP-0191 阻止用户:阻止命令但结果出错。
错误 xmlns="jabber:client" type="cancel" code="503" 服务不可用 xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"
【问题讨论】:
据我所知,openfier 不支持 XEP-0191 用于阻止用户。您需要实施 XEP-0016 隐私列表。 所以你必须使用创建隐私列表 这个方法。
- (void)setListWithName:(NSString *)privacyListName items:(NSArray *)items fromUser:(NSString *)user
你可以用下面的方法激活它
- (void)setActiveListName:(NSString *)privacyListName;
请参考
有关隐私列表的更多详细信息,请关注
【讨论】:
这对我有用。
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;
【讨论】: