Objective-C

NXMClient

Bevor Sie einen Chat starten können, muss sich das Client SDK bei den Vonage-Servern authentifizieren. Die folgenden Ergänzungen sind erforderlich, um ViewController.m.

Importieren Sie am Anfang der Datei NexmoClient und User.

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

Hinzufügen einer NXMClient Instanz und user Eigenschaft unterhalb der statusLabel.

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

Schaltfläche Ziele

Damit die Anmeldeschaltflächen funktionieren, müssen Sie ihnen Ziele hinzufügen, die eine Funktion ausführen, wenn sie angetippt werden. In der ViewController.m Datei Folgendes hinzufügen.

@implementation ViewController
    ...

- (void)viewDidLoad {
    ...
}

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

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

Verknüpfen Sie dann die beiden Funktionen mit ihren jeweiligen Schaltflächen am Ende der viewDidLoad Funktion.

- (void)viewDidLoad {
    ...

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

Hinzufügen der Log-in-Funktion

Am Ende des ViewController.mfügen Sie die login Funktion, die von der setUserAs Funktionen. Diese Funktion setzt den Delegierten des Kunden und meldet sich an.

@implementation ViewController
    ...

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

Der Delegierte des Kunden

Damit der Delegierte funktioniert, müssen Sie folgende Voraussetzungen erfüllen ViewController entsprechen NXMClientDelegate. Zu diesem Zweck müssen Sie die NXMClientDelegate zur Schnittstellendefinition für ViewController.m.

@interface ViewController () <NXMClientDelegate>

...

@end

Fügen Sie dann am Ende der Datei Folgendes hinzu NXMClientDelegate Funktionen.

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

Wenn ein Fehler auftritt, wird eine Fehlermeldung angezeigt und die statusLabel wird mit dem entsprechenden Verbindungsstatus aktualisiert.

Bauen und Ausführen

Presse Cmd + R zu erstellen und erneut auszuführen. Wenn Sie auf eine der Anmeldeschaltflächen tippen, wird der Client mit dem entsprechenden Benutzer angemeldet:

Interface connected