Get application credentials
QuickBlox application includes everything that brings messaging right into your application - chat, video calling, users, push notifications, etc. To create a QuickBlox application, follow the steps below:- Register a new account following this link. Type in your email and password to sign in. You can also sign in with your Google or GitHub accounts.
- Create the app clicking New app button.
- Configure the app. Type in the information about your organization into corresponding fields and click Add button.
- Go to Dashboard => YOUR_APP => Overview section and copy your Application ID, Authorization Key, Authorization Secret, and Account Key .
Requirements
The minimum requirements for QuickBlox Flutter SDK are:- iOS 13.0
- Android (minimum version 5.0, API 21)
- Flutter (minimum version 2.12.0)
Install QuickBlox SDK into your app
To manage project dependencies Flutter should be installed.
YAML
Add permissions
For Android
Starting from 0.18.0, the SDK no longer manages permissions required for calling functionality on Android. This change provides developers with more control over their app’s permission handling. If your app uses calling features, please make sure to manually declare the required permissions in your app’sAndroidManifest.xml
file.
Additionally, if your app requires access to the camera, microphone, internet, or storage, you may need to include related permissions in the manifest as well.
Kindly ensure you’re modifying the main
AndroidManifest.xml
file located at the application level — not a test or variant manifest.XML
XML
XML
Note that mentioning the camera and microphone permissions in the manifest isn’t always enough. You need to request camera and microphone permissions additionally at runtime.
For iOS
You can use our SDK in the background mode as well. If you want to receive push notifications when the app goes to background mode, this requires you to add specific app permissions. Under the app build settings, open the Capabilities tab and turn on Remote notifications checkbox only.

Initialize QuickBlox SDK
Initialize the framework with your application credentials. Pass Application ID, Authorization Key, Authorization Secret, and Account Key to theinit()
method.
Dart
SecurityIt’s not recommended to keep your authKey and authSecret inside an application in production mode, instead of this, the best approach will be to store them on your backend.
Argument | Required | Description |
---|---|---|
appId | yes | Application identifier. |
authKey | yes | Authorization key. |
authSecret | yes | Authorization secret. |
accountKey | yes | Required to get actual apiEndpoint and chatEndpoint for the right server. |
Initialize QuickBlox SDK without Authorization Key and Secret
You may don’t want to store authKey and authSecret inside an application for security reasons. In such case, you can initialize QuickBlox SDK with applicationId and accountKey only, and store your authKey and authSecret on your backend. But, if so, the implementation of authentication with QuickBlox should be also moved to your backend.Dart
Argument | Required | Description |
---|---|---|
appId | yes | Application identifier. |
accountKey | no | Required to get actual apiEndpoint and chatEndpoint for the right server. |
Point SDK to enterprise server
To point QuickBlox SDK to the QuickBlox enterprise server, you should passapiEndpoint
and chatEndpoint
to the init()
method.
Dart
Argument | Required | Description |
---|---|---|
appId | yes | Application identifier. |
authKey | yes | Authorization key. |
authSecret | yes | Authorization secret. |
apiEndpoint | no | API endpoint. |
chatEndpoint | no | Chat endpoint. |
Contact our sales team to get API endpoint and chat endpoint.
Enable auto-reconnect to Chat
QuickBlox Chat runs over XMPP protocol. To receive messages in a real time mode, the application should be connected to the Chat over XMPP protocol. To enable auto-reconnect to Chat, callenableAutoReconnect()
method and pass true
to it.
Dart
enable
parameter as false
to enableAutoReconnect()
method.
Dart
By default, this parameter is enabled. Set autoreconnection before calling the
login()
method so it could be applied in a current chat.Enable logging
Logging functionality allows you to keep track of all events and activities while running your app. As a result, you can monitor the operation of the SDK and improve the debug efficiency. There are 3 logging use cases:- Server API logging is used to monitor Server API calls.
- Chat logging is used to monitor chat issues.
- WebRTC logging is used to gather issues with video.
- Go over this section to learn how to enable logging for your iOS app.
- Go over this section to learn how to enable logging for your Android app.
Dart
Dart
Dart
Dart
Message carbons
Message carbons functionality allows for multi-device support. Thus, all user messages get copied to all their devices so they could keep up with the current state of the conversation. For example, a User A has phone running conversations and desktop running conversations. User B has desktop running conversations. When User B sends a message to User A, the message shows on both the desktop and phone of User A. Enable message carbonsDart
Dart
By default, this parameter is turned off. Keep it enabled if you want to receive messages on all devices of the particular user (when a user is logged in on several devices).
Stream management
Stream management has two important features Stanza Acknowledgements and Stream Resumption:- Stanza Acknowledgements is the ability to know if a stanza or series of stanzas has been received by one’s peer. In other words, a reply is requested on every sent message. If the reply is received, the message is considered as delivered.
- Stream Resumption is the ability to quickly resume a stream that has been terminated. Once a connection is re-established, Stream Resumption is executed. By matching the sequence numbers assigned to each Stanza Acknowledgement a server and client can verify which messages are missing and request to resend missing messages.
initStreamManagement()
method and pass autoReconnect
and messageTimeout
parameters to it to enable stream management.
Dart
Argument | Required | Description |
---|---|---|
messageTimeout | yes | Preferred resumption time (in seconds). If this parameter is greater than 0, then it is applied, otherwise it is not applied. |
autoReconnect | no | Set this parameter to apply Stream resumption. Set it as true to use Stream resumption for new connections. Default: false. |
You should enable Stream Management before you do the
login()
because the Stream Management is initialized while Chat login is performed.The Stream Management defines an extension for active management of a stream between a client and server, including features for stanza acknowledgments.