2012-04-03 4 views
0

Ich entwickle eine XMPP-basierte Chat-Anwendung für iOS. Eine der Eigenschaften der App ist, dass ich einige der Benutzer von meinem Hahn blockieren muss. Gibt es irgendeine Methode, die dafür im XMPP Rahmenwerk verfügbar ist? Wenn nicht, gibt es etwas Arbeit um dies zu tun?Blockieren von Benutzer in XMPP Framework iOS

Kann mir auch jemand helfen, Bilder von einem Benutzer zu einem anderen mit XMPP zu senden?

Antwort

4

Es gibt eine Reihe von Dingen, die Sie vielleicht prüfen wollen:

wahrscheinlich Ihre Benutzer des Kontakts Präsenz und umgekehrt gezeichnet wird. Er wird von der Anwesenheit des Kontakts abmelden (so wird er nicht mehr Präsenz Benachrichtigungen von ihm erhalten) durch das Senden:

<presence to='[email protected]' type='unsubscribe'/> 

Er wird widerrufen Abonnement seine eigene Präsenz von dem Kontakt durch das Senden:

<presence to='[email protected]' type='unsubscribed'/> 

Endlich können Sie den Artikel aus Ihrem Dienstplan entfernen.

<iq from='[email protected]/home' type='set' id='roster'> 
    <query xmlns='jabber:iq:roster'> 
    <item jid='[email protected]' subscription='remove'/> 
    </query> 
</iq> 

In der Tat, wenn Sie die Strophe oben senden, das heißt, wenn Sie beide Abonnements abbrechen möchten, brauchen Sie nicht die Anwesenheit Strophen zu senden, werden sie von den Servern behandelt werden.

Abschließend können Sie die weitere Interaktion mit dem Benutzer mithilfe der API jabber:iq:privacy blockieren. Dies wird im Detail erläutert here.

Die allgemeine Anwesenheit/Dienstplanverwaltung wird in der gleichen RFC, wahrscheinlich am besten here erklärt.

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

} 
+1

-Code nur Antworten sind nicht sehr gut, empfehlen Sie uns das erklären. –

+0

importieren Sie einfach die Datei xmppprivacy.h .create privacy Block_list mit diesem Code und senden Sie iq, um diese Liste mit [xmppPrivacy reveetListWithName: @ "Block_List"] zu erhalten; diese Methode. – vishal

+0

Sobald dieser Code zu diesem Zeitpunkt ausgeführt wird Benutzer nicht empfangene Nachricht Formular blockiert Benutzer, aber wenn ich meine xmppstream wieder verbinden ich bekomme Nachricht von blockierten Benutzer. – suthar

1

Bitte überprüfen Sie diesen Code Benutzer Blockierung zu implementieren:

-(void)blockUser{ 

XMPPIQ *iq = [[XMPPIQ alloc]init]; 
NSString *from = [NSString stringWithFormat:@"[email protected]/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:@"[email protected]/resources"]; 

[block addChild:item]; 

[iq addChild:block]; 

[xmppStream sendElement:iq]; 

} 
+0

hey Kumpel danke dafür, es funktioniert super !!!! – Preetha

+0

@Preetha welchen XMPP-Server benutzen Sie? Dieser Code funktioniert nicht für mich Ich benutze Openfire 4.1.1. – ivarun

+0

Ich habe ejabberd Chat-Server verwendet – TMD

Verwandte Themen