2017-08-23 1 views
0

Je suis en train d'essayer l'application de chat via pubnub dans xamarin.Forms, je peux me connecter à ma chaîne que j'ai compris en gardant des points de rupture.Maintenant j'essaie d'obtenir la liste des personnes qui s'est connecté à ma chaîneComment obtenir la liste des utilisateurs de connexion-pubnub

<ContentPage.Content> 
    <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"> 
     <Label Text="Welcome" TextColor="Blue" HorizontalOptions="Center" VerticalOptions="Center"> 
      <Label.FontSize> 
       <OnIdiom x:TypeArguments="x:Double"> 
        <OnIdiom.Phone> 
         <OnPlatform x:TypeArguments="x:Double" iOS="20" Android="20" WinPhone="20" /> 
        </OnIdiom.Phone> 
        <OnIdiom.Tablet> 
         <OnPlatform x:TypeArguments="x:Double" iOS="30" Android="30" WinPhone="30" /> 
        </OnIdiom.Tablet> 
       </OnIdiom> 
      </Label.FontSize> 
     </Label> 
     <ListView x:Name="LoginUserList" ItemsSource="{Binding LoginUserList}"ItemSelected="LoginUserList_OnItemSelected"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ViewCell> 
         <StackLayout Orientation="Horizontal"> 
          <Label Text="{Binding UserName}" TextColor="SkyBlue" FontSize="20" HorizontalOptions="Center" VerticalOptions="Center"></Label> 
         </StackLayout> 
        </ViewCell> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
    </StackLayout> 
</ContentPage.Content> 

comment afficher la liste des utilisateurs connectés.

public class ChatListViewModel : INotifyPropertyChanged 
{ 
    private List<UserDto> _loginUserList; 
    private string _offlineImageSource; 
    private bool _offlineVisibility; 
    private string _userName; 

    public ChatListViewModel() 
    { 
     InitializeData(); 
     GetAllUsersFromServer(); 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    public List<UserDto> LoginUserList 
    { 
     get { return _loginUserList; } 
     set 
     { 
      _loginUserList = value; 
      OnPropertyChanged(); 
     } 
    } 

    public string OfflineImageSource 
    { 
     get { return _offlineImageSource; } 
     set 
     { 
      _offlineImageSource = value; 
      OnPropertyChanged(); 
     } 
    } 

    public string UserName 
    { 
     get { return _userName; } 
     set 
     { 
      _userName = value; 
      OnPropertyChanged(); 
     } 
    } 

    public bool OfflineVisibility 
    { 
     get { return _offlineVisibility; } 
     set 
     { 
      _offlineVisibility = value; 
      OnPropertyChanged(); 
     } 
    } 

    private async void GetAllUsersFromServer() 
    { 
     LoginUserList = await UserService.Instance.GetAllUsers(); 
    } 

      protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 

    private void InitializeData() 
    { 
     OfflineImageSource = "BlackCircle.png"; 
    } 
} 

Voici le ViewModel pour la liste d'affichage.

+0

lier Avez-vous vos utilisateurs des données à LoginUserList ItemSource? –

+0

En fait, je lie la source de l'élément dans viewmodel, pour afficher la liste des utilisateurs enregistrés de webApis et je n'ai pas utilisé pubnub apis là. Mais maintenant je veux lier de pubnub mais je ne sais pas comment faire cela. – sahithi

+0

Ajoutez votre code viewmodel dans votre question. –

Répondre

0

Vous pouvez obtenir une liste des abonnés/utilisateurs actifs sur un canal PubNub en utilisant le rappel «Connect». Vous allez fournir une fonction "connect" à appeler lorsqu'un nouvel utilisateur ou un utilisateur existant se connecte. Lorsque cela se produit, vous transmettre cette information à l'endroit de votre besoin.

Je vais vous montrer quelques exemples de code:

PUBNUB.subscribe({ 
    channel : "hello_world",  // CONNECT TO THIS CHANNEL. 
    callback : function(message){} // RECEIVED A MESSAGE. 
    connect : function() {  // CONNECTION ESTABLISHED. 
     // A new user or existing user has 
     // connected. Send details to your server. 

     // --------------------------------------- 
     // This is a psudo-code example function: 
     // --------------------------------------- 
     psudo_post_url("http://www.mywebsite.com/pubnub-user-connected", { 
      "user_id" : 123456789, 
      "channel" : "hello_word" 
     }); 
    } 
}) 
+0

Merci @Pavan V Parekh, je vais essayer ça. – sahithi

+1

Cet extrait de code provient de PubNub v3 SDK. S'il vous plaît voir v4 SDK comme v3 est EOL (fin de vie). v4 utilise un écouteur qui reçoit des événements d'état et l'un d'entre eux est PNConnectedCategory: https://www.pubnub.com/docs/web-javascript/pubnub-javascript-sdk#hello_world –