SendbirdChat instance should be initiated in each client app through user authentication with the Sendbird server. The instance communicates and interacts with the server based on the authenticated user account and is allowed to use the Chat SDK's features. This page explains how to authenticate your user with the server.
To use our chat features, you must initialize the
SendbirdChat instance by passing
APP_ID of your Sendbird application as an argument to a parameter of the
initialize(params:migrationStartHandler:completionHandler:) method. The
initialize(params:migrationStartHandler:completionHandler:) method must be called once across your client app. Typically, initialization is implemented in the user login view.
With the implementation of local caching, the
isLocalCachingEnabled property of the
InitParams object has been added. Additionally, two callback functions,
completionHandler, have also been added to the initialization code as shown below.
isLocalCachingEnabled parameter determines whether the client app will use local storage through Sendbird Chat SDK or not. Since this is optional, the default value is set to
false. If you want to build a client app with our local caching functionalities, set the
isLocalCachingEnabled parameter to
completionHandler gets the initialization status through different event handlers and informs the client app whether the initialization is successful or not. On the other hand, the
migrationStartHandler is called when the migration for local caching has started.
If the initialization fails when you set
true, the SDK will operate normally and change the value of the
false. If you still wish to use the local caching, clear the database using the
clearCachedData(completionHandler:) and try the initialization again with
isLocalCachingEnabled set to
By default, Sendbird server can authenticate a user just by a unique user ID. Then, the server queries the database to check for a match upon connection request. If no matching user ID is found, the server creates a new user account with the user ID. The ID should be unique within a Sendbird application to be distinguished from others, such as a hashed email address or phone number in your service.
This authentication process is useful when developing a chat service or if your service doesn't require additional security.
Note: Go to the Event delegate page to learn more about the usages of the Chat SDK's delegates and callbacks.
Note: Apart from initializing the
SendbirdChatinstance, you should connect to the Sendbird server before calling almost every method through the Chat SDK. If you attempt to call a method without connecting, a
.connectionRequired (800101)error will be returned.
When a user logs in to a client app using the Chat SDK, you can choose how to authenticate a user. You can authenticate a user with just their unique user ID and either an access token or a session token. If any token is issued for a user, it must be provided to the Sendbird server each time the user logs in by using the
Through our Chat Platform API, an access token can be generated when creating a user. You can also issue an access token for an existing user. Once an access token is issued, a user is required to provide the access token in the
connect() method which is used for logging in.
Using the Chat API, create a Sendbird user account with the information submitted when a user signs up or in to your service.
Save the user ID along with the issued access token to your persistent storage which is securely managed.
When the user attempts to log in to a client app, load the user ID and access token from the storage, and then pass them to the
Periodically replacing the user's access token is recommended to protect the account.
Note: From Settings > Application > Security > Access token permission setting in your dashboard, you are able to prevent users without an access token from logging in to your Sendbird application or restrict their access to read and write messages.
You can also use a session token instead of an access token to authenticate a user. It's a more secure option because session tokens expire after a certain period whereas access tokens don't. See Chat Platform API guides for further explanation about the difference between access token and session token, how to issue a session token, and how to revoke all session tokens.
When a user is authenticated with a session token, the Chat SDK connects the user to the Sendbird server and can send data requests to it for ten minutes as long as the session token hasn't expired or hasn't been revoked.
Upon the user's session expiration, the Chat SDK will refresh the session internally using a
SessionDelegate. However, if the session token has expired or has been revoked, the Chat SDK can't do so. In that case, the client app needs to implement a
SessionDelegate instance to refresh the token and pass it back to the SDK so that it can refresh the session again.
SessionDelegateinstance must be set before the server connection is requested.
The following code shows how to implement the delegate methods.
A user can be disconnected from Sendbird server when they no longer need to receive messages from an online state. However, the user will still receive push notifications for new messages from group channels they've joined.
When disconnected, all event delegates in a user's client app registered by
add(_:identifier:) stop receiving event callbacks from the server. Then, all internally cached data in the client app, such as the channels that are cached when the
getChannel(url:completionHandler:) method of
GroupChannel is called, are also flushed.
Note: By default, most of the data related to users, channels, and messages are internally cached in the
SendbirdChatinstance of a user's client app, which are retrieved by the corresponding query instances or received through the event delegates.