2016-04-18 10 views
1

Ich habe Anwendung wo pubnub Chat-Funktion verwendet wurde. ich unten Funktion ausführen möchtenBenutzerliste für pubnub-Chat-Ziel c

1)register/login user in pubnub programatically for chat 
2)Get list of the all the users 
3)Make friend and send 1st message to the user 

Ich bin mir bewusst darüber, wie Sie den Kanal erstellen. Ich hatte Kanal von unten Code erstellt:

PNConfiguration *configuration = [PNConfiguration configurationWithPublishKey:@"pub-c-XXXXXXXXXXXX-a2bf-XXXX-XXXX-XXXXXXXXXXXX"subscribeKey:@"sub-c-XXXXXXXXXXXX-02d0-XXXX-XXXX-XXXXXXXXXXXX"]; 
     self.client = [PubNub clientWithConfiguration:configuration]; 
     //[self.client addListener:self]; 
     [self.client subscribeToChannels: @[@"my_channel"] withPresence:YES]; 


I get the channel architecture by : http://pubnub.github.io/pubnub-design-patterns/2015/03/05/Inbound-Channel-Pattern.html 
But how do i get the list of the users and their channel and send the message. 


I also found this : https://www.pubnub.com/docs/ios-objective-c/presence-sdk-v4 
but this only show the friends status. whether they are online/offline by 

    Join 
    leave 
    timeout 

Please advice and help 

-Code die Liste der Benutzer zu finden sind unten, aber immer noch ist zeigen die ZERO-Benutzer:

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

     PNConfiguration *configuration = [PNConfiguration configurationWithPublishKey:@"pub-c-XXXXXXXXXXXX-a2bf-XXXX-XXXX-XXXXXXXXXXXX"subscribeKey:@"sub-c-XXXXXXXXXXXX-02d0-XXXX-XXXX-XXXXXXXXXXXX"]; 
     self.client = [PubNub clientWithConfiguration:configuration]; 
     //Subscription process results arrive to listener which should adopt to PNObjectEventListener protocol and registered using: 
     [self.client addListener:self]; 

     //Listeners callbacks: 
     [self.client subscribeToChannels: @[@"XXX"] withPresence:YES]; 
     configuration.uuid = @"XXX"; 
     [self.client hereNowForChannel:@"XXX" withVerbosity:PNHereNowState 
          completion:^(PNPresenceChannelHereNowResult *result, 
             PNErrorStatus *status) { 

           // Check whether request successfully completed or not. 
           if (!status.isError) { 
            NSLog(@"list of users %@", result.data.uuids); 
            NSLog(@"list of result.data.occupancy %@", result.data.occupancy); 

            // result.data.uuids - dictionary with active subscriber. Each entry will have next 
            //      fields: "uuid" - identifier and "state" if it has been provided. 
            // result.data.occupancy - total number of active subscribers. 
           } 
           // Request processing failed. 
           else { 
            NSLog(@"FAIL"); 
            // Handle presence audit error. Check 'category' property to find 
            // out possible issue because of which request did fail. 
            // 
            // Request can be resent using: [status retry]; 
           } 
          }]; 

    } 

Antwort

1

PubNub Hier arbeiten mit den staatlichen

Sie Rufen Sie hereNowForChannel mit withVerbosity:PNHereNowState an, um den Status des Benutzers zusammen mit allen abonnierten Benutzern abzurufen.

Die Objective-C SDK API Reference Docs for hereNowForChannel hat weitere Details.

+0

Vielen Dank für die Antwort. Ich habe versucht, per Code in Simulate auszuführen. 1) Ich abonniere mit dem Kanal: XXX und führe den Code aus, es gibt mir die Liste von result.data.uuids = 0 2) Ich abonniere mit dem Kanal: YYY und führe den Code aus, der mir die Liste von result.data.uuids gibt = 0. Muss ich den Code im Gerät ausführen? Zählt das nur die Benutzer, die im PRESENCE-Modus sind? Bitte erläutern Sie –

+1

Haben Sie Presence für Ihre Schlüssel in Ihrem PubNub Account Dashboard aktiviert? –

+0

[self.client subscribeToChannels: @ [@ "XXX"] mit Presence: YES]; und [self.client subscribeToChannels: @ [@ "YYY"] mit Presence: YES]; : - Ich habe diese Zeile im Code hinzugefügt Auch Subskriptionsschlüssel und öffentlicher Schlüssel sind immer eindeutig für das gesamte Projekt? –

1

Mit Blick auf den Code, wenn Sie immer die UUID auf @ "XXX" setzen, haben Sie immer nur 1 Benutzer. Das Presence-Add-On für PubNub verwendet die UUID-Eigenschaft, um aktive Benutzer auf einem Kanal zu verfolgen, und wenn Sie nur 1 UUID verwenden, behandelt PubNub jeden Client als denselben Client.

Hier ist unsere Knowledge Base-Artikel über das Einstellen der UUID https://www.pubnub.com/knowledge-base/discussion/138/how-do-i-set-the-uuid

Auch das iOS SDK PubNub die UUID automatisch erstellen und wiederverwenden. Dies ist eine neue Funktion als 4.2 sdk. https://www.pubnub.com/docs/ios-objective-c/api-reference-sdk-v4#uuid_example_2

+0

Das bedeutet, dass wir die UUID immer im lokalen Speicher des Geräts speichern müssen und nicht jedes Mal die UUID zuweisen müssen? –

+0

Aber wie kann ich die verschiedenen UUID bekommen und die Liste aller anderen UUID und den Namen des Kanals bekommen? Mit dem "HereNowForChannel" erhalte ich keine Liste von UUID. –