Objective-C

NXMClient

Antes de que puedas iniciar un chat, el Client SDK necesita autenticarse en los servidores de Vonage. Las siguientes adiciones son necesarias para ViewController.m.

En la parte superior del archivo, importe NexmoClient y User.

#import "ViewController.h"
#import "User.h"
#import <NexmoClient/NexmoClient.h>

Añadir un NXMClient y user debajo de la propiedad statusLabel.

@interface ViewController ()
    ...
    @property UILabel *statusLabel;
    @property NXMClient *client;
    @property User *user;
    
@end

Objetivos de los botones

Para que los botones de inicio de sesión funcionen, es necesario añadirles objetivos que ejecuten una función al pulsarlos. En los botones ViewController.m añada lo siguiente.

@implementation ViewController
    ...

- (void)viewDidLoad {
    ...
}

- (void)setUserAsAlice {
    self.user = User.Alice;
    [self login];
}

- (void)setUserAsBob {
    self.user = User.Bob;
    [self login];
}

A continuación, vincular las dos funciones a sus respectivos botones al final de la viewDidLoad función.

- (void)viewDidLoad {
    ...

    [self.loginAliceButton addTarget:self action:@selector(setUserAsAlice) forControlEvents:UIControlEventTouchUpInside];
    [self.loginBobButton addTarget:self action:@selector(setUserAsBob) forControlEvents:UIControlEventTouchUpInside];
}

Añadir la función de inicio de sesión

Al final de ViewController.mañada el login que necesita el setUserAs funciones. Esta función establece el delegado del cliente e inicia sesión.

@implementation ViewController
    ...

- (void)login {
    [self.client setDelegate:self];
    [self.client loginWithAuthToken:self.user.jwt];
}

El delegado cliente

Para que el delegado funcione, debe tener ViewController ajustarse a NXMClientDelegate. Para ello tendrá que añadir el NXMClientDelegate a la definición de la interfaz para ViewController.m.

@interface ViewController () <NXMClientDelegate>

...

@end

A continuación, al final del archivo, añada lo siguiente NXMClientDelegate funciones.

- (void)client:(NXMClient *)client didChangeConnectionStatus:(NXMConnectionStatus)status reason:(NXMConnectionStatusReason)reason {
    switch (status) {
        case NXMConnectionStatusConnected: {
            [self setStatusLabelText:@"Connected"];
            break;
        }
        case NXMConnectionStatusConnecting:
            [self setStatusLabelText:@"Connecting"];
            break;
        case NXMConnectionStatusDisconnected:
            [self setStatusLabelText:@"Disconnected"];
            break;
    }
}

- (void)client:(NXMClient *)client didReceiveError:(NSError *)error {
    [self setStatusLabelText:error.localizedDescription];
}

- (void)setStatusLabelText:(NSString *)newStatus {
    dispatch_async(dispatch_get_main_queue(), ^{
       self.statusLabel.text = newStatus;
    });
}

Si se encuentra un error, se mostrará statusLabel se actualiza con el estado de la conexión correspondiente.

Construir y ejecutar

Pulse Cmd + R para construir y ejecutar de nuevo. Si pulsa sobre uno de los botones de inicio de sesión, el cliente iniciará sesión con el usuario correspondiente:

Interface connected