NXMClient
Before you can place a call, the Client SDK needs to authenticate to the Vonage servers. The following additions are required to ViewController.swift
.
NOTE: Notice that, you have already imported NexmoClient
at the top of the file.
Add a NXMClient
instance, below the callButton
.
class ViewController: UIViewController {
var connectionStatusLabel = UILabel()
var callButton = UIButton(type: .roundedRect)
let client = NXMClient.shared
...
}
Add the JWT
At the end of viewDidLoad
, set the client delegate and log in - please make sure to replace ALICE_JWT
for the JWT
you created during a previous step. Please remember, the expiry time for the token was set to 6 hours so you will need to generate a new one if it is too old.
override func viewDidLoad() {
...
client.setDelegate(self)
client.login(withAuthToken: "ALICE_JWT")
}
The Client Delegate
For the delegate part to work, you need to have ViewController
conform to NXMClientDelegate
. At the end of the file, add this extension.
extension ViewController: NXMClientDelegate {
func client(_ client: NXMClient, didReceiveError error: Error) {
print("✆ ‼️ connection error: \(error.localizedDescription)")
DispatchQueue.main.async { [weak self] in
self?.callButton.alpha = 0
self?.connectionStatusLabel.text = error.localizedDescription
}
}
func client(_ client: NXMClient, didChange status: NXMConnectionStatus,
reason: NXMConnectionStatusReason) {
DispatchQueue.main.async { [weak self] in
self?.callButton.alpha = 0
switch status {
case .connected:
self?.connectionStatusLabel.text = "Connected"
self?.callButton.alpha = 1
case .disconnected:
self?.connectionStatusLabel.text = "Disconnected"
case .connecting:
self?.connectionStatusLabel.text = "Connecting"
@unknown default:
self?.connectionStatusLabel.text = "Unknown"
}
}
}
}
An error is shown if encountered and the connectionStatusLabel
is updated with the relevant connection status. Also, callButton
is shown when connected.
Build and Run
Cmd + R
to build and run again:
Making an in-app voice call
You make a voice call from an iOS app to a phone.Steps