在XMPP Framework iOS中阻止用户

时间:2012-04-03 11:50:55

标签: iphone xmpp

我正在为iOS开发基于XMPP的聊天应用程序。该应用程序的一个功能是我需要阻止我的公鸡中的一些用户。在XMPP框架中是否有任何可用的方法?如果没有,是否有一些工作可以做到这一点?

也可以帮助我使用XMPP将图像从一个用户发送到另一个用户吗?

3 个答案:

答案 0 :(得分:4)

您可能需要考虑许多事项:

可能您的用户订阅了联系人的在线状态,反之亦然。他将取消订阅该联系人的存在(因此他将不再通过发送来接收来自他的在线通知)

<presence to='contact@example.com' type='unsubscribe'/>

他将通过发送:

撤销订阅自己在线的信息
<presence to='contact@example.com' type='unsubscribed'/>

最后,您可以从名单中删除该项目。

<iq from='user@example.com/home' type='set' id='roster'>
  <query xmlns='jabber:iq:roster'>
    <item jid='contact@example.com' subscription='remove'/>
  </query>
</iq>

事实上,如果你发送上面的节,即如果你想取消两个订阅,你不需要发送存在节,它们将由服务器处理。

最后,您现在可以通过jabber:iq:privacy API阻止与用户的进一步互动。详细解释了here

一般存在/名册管理在相同的rfc中解释,可能是最好的here

答案 1 :(得分:1)

请检查此代码以实现用户阻止:

-(void)blockUser{

XMPPIQ *iq = [[XMPPIQ alloc]init];
NSString *from = [NSString stringWithFormat:@"from@mail.com/resources"];

[iq addAttributeWithName:@"from" stringValue: from];

[iq addAttributeWithName:@"type" stringValue:@"set"];

NSXMLElement *block =[NSXMLElement elementWithName:@"block" xmlns:@"urn:xmpp:blocking"];

NSXMLElement *item = [NSXMLElement elementWithName:@"item"];

[item addAttributeWithName:@"jid" stringValue:@"to@mail.com/resources"];

[block addChild:item];

[iq addChild:block];

[xmppStream sendElement:iq];

}

答案 2 :(得分:-1)

    - (void)setupXMPPPrivacy
{
NSLog((@"%s [Line %d] "), __PRETTY_FUNCTION__, __LINE__);
//Init XMPPPrivacy List
//xmppPrivacy = [[XMPPPrivacy alloc] init];
xmppPrivacy = [[XMPPPrivacy alloc] initWithDispatchQueue:dispatch_get_main_queue()];
//Activate xmpp modules
[xmppPrivacy activate:[[self appDelegate] xmppStream]];
//Delegate XMPPPrivacy
[xmppPrivacy addDelegate:self delegateQueue:dispatch_get_main_queue()];

[xmppPrivacy retrieveListWithName :@"Block_List"];

}

-(void)privacyblock
{

[xmppPrivacy retrieveListWithName:@"Block_List"];
    [xmppPrivacy setActiveListName:@"Block_List"];
    NSXMLElement *privacyElement = [XMPPPrivacy privacyItemWithType:@"jid" value:xmpp_jid action:@"deny" order:1];
    [XMPPPrivacy blockIQs:privacyElement];
    [XMPPPrivacy blockMessages:privacyElement];
    [XMPPPrivacy blockPresenceIn:privacyElement];
    [XMPPPrivacy blockPresenceOut:privacyElement];

    NSLog(@"-------> PRIVACY ELEMENT: %@", privacyElement);

    [arrayPrivacy addObject:privacyElement];
    [xmppPrivacy setListWithName:@"Block_List" items:arrayPrivacy];

}