Блокировка пользователя в XMPP Framework iOS - PullRequest
0 голосов
/ 03 апреля 2012

Я разрабатываю приложение для чата на базе XMPP для iOS. Одной из особенностей приложения является то, что мне нужно заблокировать некоторых пользователей из моего петуха. Есть ли какой-либо метод, доступный для этого в платформе XMPP? Если нет, то есть ли что-нибудь для этого?

Также может ли кто-нибудь помочь мне в отправке изображений от одного пользователя другому с помощью XMPP?

Ответы [ 3 ]

4 голосов
/ 04 апреля 2012

Есть несколько вещей, которые вы могли бы рассмотреть:

Вероятно, ваш пользователь подписан на присутствие контакта, и наоборот.Он отменит подписку о присутствии контакта (поэтому он больше не будет получать уведомления о присутствии от его), отправив:

<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.Это подробно объясняется здесь .

Общее управление присутствием / реестром объясняется в том же документе, вероятно, лучше всего здесь .

1 голос
/ 08 июня 2015

Пожалуйста, проверьте этот код для реализации блокировки пользователя:

-(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];

}
0 голосов
/ 31 октября 2014
    - (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];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...