QuickBlox Documentation

QuickBlox provides powerful Chat API and SDK to add real-time messaging and video calls to your web and mobile apps. Learn how to integrate QuickBlox across multiple platforms.

Connection

Learn how to connect to the chat server and set connection settings.

Before you begin

  1. Register a QuickBlox account. This is a matter of a few minutes and you will be able to use this account to build your apps.
  2. Configure QuickBlox SDK for your app. Check out our Setup page for more details.
  3. Create a user session to be able to use QuickBlox functionality. See our Authentication page to learn how to do it.

Visit our Key Concepts page to get an overall understanding of the most important QuickBlox concepts.

Connect to Chat server

To connect to the Chat server use the code snippet below.

let currentUser = QBUUser()
currentUser.ID = 56
currentUser.password = "chatUserPass"
QBChat.instance.connect(withUserID: currentUser.id, password: currentUser.password, completion: { (error) in
    
})
QBUUser *currentUser = [QBUUser user];
currentUser.ID = 56;
currentUser.password = @"chatUserPass";
[QBChat.instance connectWithUserID:currentUser.ID password:currentUser.password completion:^(NSError * _Nullable error) {
    
}];

Use QBChatDelegate to handle different connection states.

class YourClass : NSObject {
    QBChat.instance.addDelegate(self)
}
// MARK: QBChatDelegate
extension YourClass : QBChatDelegate {
    func chatDidConnect() {
    }
    func chatDidReconnect() {
    }
    func chatDidDisconnectWithError(_ error: Error?) {
    }
    func chatDidNotConnectWithError(_ error: Error) {
    }
}
@interface YourClass () <QBChatDelegate>
@end

@implementation YourClass
- (instancetype)init {
    self = [super init];
    if (self) {
        [QBChat.instance addDelegate:self];
    }
    return self;
}
// MARK: QBChatDelegate
- (void)chatDidConnect {
}
- (void)chatDidReconnect {
}
- (void)chatDidDisconnectWithError:(NSError *)error {
}
- (void)chatDidNotConnectWithError:(NSError *)error {
}
- (void)chatDidFailWithStreamError:(NSError *)error {
}

@end;

Disconnect from Chat server

Disconnect from the Chat server using the snippet below.

QBChat.instance.disconnect { (error) in
    
}
[QBChat.instance disconnectWithCompletionBlock:^(NSError * _Nullable error) {
    
}];

Enable auto-reconnect to Chat

The SDK reconnects automatically when the connection to the Chat server is lost. There is a way to disable it and then manage it manually.

QBSettings.autoReconnectEnabled = true
QBSettings.autoReconnectEnabled = YES;

Manage Chat connections

To provide a seamless chat experience, our SDK manages connections to the Chat server at an application-wide level. Thus, to handle offline messages correctly, use the disconnect() method when an app goes to the background and connect() method when an app goes to the foreground. As a result, the SDK will disconnect/connect the current user from the Chat server when the app goes to the background/foreground mode.

class AppDelegate: UIResponder, UIApplicationDelegate {
    // ...
    func applicationWillTerminate(_ application: UIApplication) {
        QBChat.instance.disconnect { (error) in
        }
    }
    func applicationDidEnterBackground(_ application: UIApplication) {
        QBChat.instance.disconnect { (error) in
        }
    }
    func applicationWillEnterForeground(_ application: UIApplication) {
        QBChat.instance.connect(withUserID: currentUser.ID, password: currentUser.password) { (error) in
        }
    }
    // ...
}
@implementation AppDelegate
// ...
- (void)applicationWillTerminate:(UIApplication *)application {
    [QBChat.instance disconnectWithCompletionBlock:^(NSError * _Nullable error) {
    }];
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
    [QBChat.instance disconnectWithCompletionBlock:^(NSError * _Nullable error) {
    }];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
    [QBChat.instance connectWithUserID:currentUser.ID password:currentUser.password completion:^(NSError * _Nullable error) {
    }];
}
// ...

Set connection settings

Use the settings below to configure the connection to the Chat server.

QBSettings.autoReconnectEnabled = true
QBSettings.carbonsEnabled = true
QBSettings.keepAliveInterval = 20
QBSettings.streamManagementSendMessageTimeout = 0
QBSettings.networkIndicatorManagerEnabled = false
[QBSettings setAutoReconnectEnabled:YES];
[QBSettings setReconnectTimerInterval:5];
[QBSettings setCarbonsEnabled:YES];
[QBSettings setKeepAliveInterval:20];
[QBSettings setStreamManagementSendMessageTimeout:0];
[QBSettings setNetworkIndicatorManagerEnabled:NO];

Parameters

Description

autoReconnectEnabled

iOS SDK reconnects automatically to the Chat server when the connection to the server is lost. Default: false.

reconnectTimerInterval

A reconnect timer can optionally be used to attempt a reconnect periodically. Set in seconds. Default: 5.

carbonsEnabled

Message carbons allow for real-time message syncing between devices. Default: false.

keepAliveInterval

Keep-alive option for a socket connection. Keep-alive is the option allowing to detect a stale connection. Set in seconds. Default: 20.

streamManagementSendMessageTimeout

The timeout value for stream management. Set in seconds. If this parameter is greater than 0, then it is applied, otherwise, it is not applied. Default: 0.

networkIndicatorManagerEnabled

A boolean value indicating whether the manager is enabled. If true, the manager will change status bar network activity indicator according to network operation notifications it receives. Default: false.

Updated 5 months ago


What's Next

Dialogs

Connection


Learn how to connect to the chat server and set connection settings.

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.