2014-12-27 6 views
6

Ich erstelle eine chat-basierte Anwendung auf QuickBlox Framework, möchte ich eine Blockfunktion in der App haben. Ich lese einige Dokumente wie XMPP und QuickBlox aus. Aber habe keine Hilfe davon bekommen.Wie blockiere ich einen Benutzer in QuickBlox?

Es gibt einige Logik der Wartung QBPrivacyList für andere Benutzer nicht zu erlauben, Nachricht zu senden und zu blockieren, aber ich habe nicht damit Erfolg.

Dies ist ein Code-Snippet, wie ich die Datenschutzliste pflege.

  1. die Privatsphäre Liste Setzen Sie sich mit Namen @"public" in Methode von Chat

    [[QBChat instance] retrievePrivacyListWithName:@"public"]; 
    

    so hat einloggen, wenn dort bereits die Privatsphäre Liste erstellt mit dem Namen "public" es in Delegatmethode

    - (void)chatDidReceivePrivacyList:(QBPrivacyList *)privacyList{ 
         NSLog(@"chatDidReceivePrivacyList: %@", privacyList); 
         _blockPrivacyList = privacyList; // Save its instance for further add more users in list 
        } 
    
    holen wird

    // Antwort ist

    [PrivacyList name: public]items:("type: USER_ID valueForType: 2075213 action: deny")

  2. Dies ist, wie fügen Sie ein weiteres Mitglied in die Privatsphäre Liste

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

    Und die alle Delegatmethoden funktioniert perfekt erstellt und fügt Mitglied in der Privatsphäre Liste.

    - (void)chatDidSetPrivacyListWithName:(NSString *)name{ 
        NSLog(@"chatDidSetPrivacyListWithName %@", name); 
        [[QBChat instance] setDefaultPrivacyListWithName:name]; // set it as default privacy list 
    } 
    
  3. Ich erhalte diese Liste Privatsphäre perfekt auch ich die app töten oder es neu installieren für denselben Benutzer. so Code meine Privatsphäre Liste funktioniert perfekt

Aber einige, wie die anderen Mitglieder in meiner DENY Privatsphäre Liste kann mir Nachricht senden. Nach den Unterlagen von diesem http://quickblox.com/developers/SimpleSample-chat_users-ios#Contact_list sollte es den Fehler wie

"error:Error Domain=com.quickblox.chat Code=503 "Service not available." 

So geben, wenn alle Liste Privatsphäre perfekt funktioniert dann wie kann meine blockierten Usern mir Nachrichten senden können?

ich mit XMPP in iOS das gleiche Problem gibt es auch XMPP verwendet, um sich, wenn Sie XMPP Logik gearbeitet hatte geben können, die auch als QuickBlox wie QuickBlox tatsächlich funktionieren wird.

Irgendwelche Vorschläge?

Antwort

3

Arbeit gefunden schließlich seine Lösung. Der Fluss und die Logik, die ich in meiner Frage geschrieben hatte, waren perfekt. Ich blieb nur bei der einen kleinen Funktion, um die Datenschutzliste zu aktivieren. Ich weiß nicht, warum QuickBlox diesen Funktionsaufruf in ihren Demos nicht geschrieben hat.

[[QBChat instance] setActivePrivacyListWithName:@"public"]; 

Gleiches gilt für XMPP. Wir müssen die Datenschutzliste pflegen und gleichzeitig einzelne Privatsphären aktivieren.

+0

Danke Haresh, ich habe genau das gesucht, du hast meinen Tag gerettet! :) – Hemang

+0

Hallo Haresh, ich habe mehrere Benutzer in der Liste hinzugefügt und aktualisiert. So entfernen Sie den einzelnen Benutzer aus der Liste und aktualisieren. – Ajay

+1

Wo haben Sie diesen Code hinzugefügt? Ich habe versucht, es nach dem Verbinden zum Chat hinzuzufügen. Aber immer noch nicht funktioniert. Der andere Benutzer empfängt weiterhin Nachrichten. Kannst du mir bitte dabei helfen? –