2017-04-03 3 views
0

in pubnub Gruppe Chat ist einfach, aber ich konnte nicht den richtigen Weg zu 1 zu 1 Chat finden, ich folgte http://pubnub.github.io/pubnub-design-patterns/2015/03/05/Inbound-Channel-Pattern.html. so Fazit für das jeder Benutzer den einzigartigen Kanal abonnieren, nicht wahr?Pubnub abonnieren 1 bis 1 Chat

PNConfiguration *configuration = [PNConfiguration configurationWithPublishKey:@“mypublishkey” subscribeKey:@“mysubskey”]; 
    [email protected]“myuuid”;//unique id help to find presence 
configuration.presenceHeartbeatValue = 120; 
//unsubscribe from channel until no response in 120 sec 

    configuration.presenceHeartbeatInterval = 30;//send to server each 30 second 
     self.client = [PubNub clientWithConfiguration:configuration]; 
     [self.client addListener:self]; 
_delegateconfig=delegate; 

    // Subscribe to demo channel with presence observation 
    [self.client subscribeToChannels: @[channelname] withPresence:YES]; 

/--für alle Benutzer oder Kanal Auflistung ---/

i hereNowWithCompletion genannt die alle Kanalliste zeigt, die in Ordnung war

zum Beispiel https://www.pubnub.com/docs/cocoa-objective-c/presence

/-------- für die Abmeldung vom Kanal --------/

[self.client unsubscribeFromChannels: @ [Kanalname] withPresence: YES]; funktioniert nicht, weil, wenn ich hier nowWithCompletion nenne, zeigt alle Liste, die vorher war, aber nach 120 Sekunden war das in Ordnung, aber ich möchte sofortige Reflation.

+0

Ja, privaten Chat nur ein Kanal mit nur zwei den Kanal und Veröffentlichen von Nachrichten an diesen Kanal abonniert Benutzer. HereNow ist einfach ein Mittel, um herauszufinden, wer einen oder mehrere Kanäle aktiv abonniert hat. Weitere Informationen zu Best Practices im Chat finden Sie unter [Chat-Grundlagen] (https://www.pubnub.com/docs/web-javascript/chat-fundamentals). –

+0

@ Craig-Conover, danke für die Antwort, immer noch habe ich Verwirrung in Bezug auf das angenommen 2 Benutzer wollen miteinander nach Ihrem Vorschlag chatten, zum Beispiel "channel_a-b", aber wenn A Nachricht an Benutzer B, dann Benutzer B kann keine Nachricht von diesem Kanal empfangen, bis Benutzer B für denselben Kanal abonniert hat. Diese Delegatmethode ruft nicht den Benutzer b auf, bis er denselben Kanal abonniert hat. (void) client: (PubNub *) client didReceiveMessage: (PNMessageResult *) Nachricht – saurabh

+0

Sie haben Recht. Also musst du B einladen und warten, bis B die Einladung angenommen hat (abonniere den Kanal). Aber das ist nicht einmal notwendig, da B nur den Verlauf aufrufen kann (Speicher muss aktiviert sein), wenn B den Kanal zuerst abonniert. –

Antwort