Home
/
Chat
/
Android

Send your first message

With Sendbird Chat SDK for Android, you can efficiently integrate real-time chat into a client app. On the client-side implementation, you can initialize and configure the chat with minimal effort. On the server-side, Sendbird ensures reliable infra-management services for your chat within the app.

This page demonstrates how to install the Chat SDK in your app so that you can send your first message in just a few simple steps.

Note: The fastest way to see Sendbird Chat SDK in action is to build your app on top of our sample app. Download the sample app to jumpstart your build.


Requirements

The minimum requirements for Chat SDK for Android are:

  • Android 4.1 (API level 16) or higher
  • Java 7 or higher
  • Android Gradle plugin 3.4.0 or higher

Note: Sendbird server supports Transport Layer Security (TLS) from versions 1.0 up to 1.3. For example, in the server regions where TLS 1.3 isn’t available, lower versions from 1.0 to 1.2 will be sequentially supported for secure data transmission.


Before you start

Before installing Sendbird Chat SDK, you need to create a Sendbird application on the Sendbird Dashboard, which comprises everything required in a chat service including users, messages, and channels. You will need the App ID of your Sendbird application when initializing the Chat SDK.

Note: Each Sendbird application can be integrated with a single client app. Within the same application, users can communicate with each other across all platforms, whether they are on mobile devices or on the web.

Sendbird UIKit

UIKit is a Sendbird Chat SDK add-on with user interfaces that enable an easy and fast integration of standard chat features into new or existing client apps.

If you would like a sample app with embedded UI, see UIKit Quickstart for Android.


Get started

To send a message in a client app, you should build and configure an in-app chat using Sendbird Chat SDK. Sendbird Chat SDK can be installed through Gradle.

Step 1 Install the Chat SDK

Installing the Chat SDK is simple if you're familiar with using external libraries or SDKs. First, add the following code to your root build.gradle file:

build.gradle
Light Color Skin
Copy
allprojects {
    repositories {
        maven { url "https://repo.sendbird.com/public/maven" }
    }
}

Note: Make sure the above code block isn't added to your module bundle.gradle file.

Then, add the dependency to your module build.gradle file:

build.gradle
Light Color Skin
Copy
dependencies {
    implementation 'com.sendbird.sdk:sendbird-android-sdk:3.0.168'
}

Note: Chat SDK versions 3.0.160 or lower can be downloaded from JCenter until February 1, 2022. SDK versions higher than 3.0.160 will be available on Sendbird's remote repository.

Alternatively, you can download the .aar file. Copy this file into your libs/ folder, and make sure you include the library in your build.gradle file as well.

Step 2 Request to access system permissions

The Chat SDK requires system permissions. These permissions allow the Chat SDK to communicate with Sendbird server and read from and write on a user device’s storage. To request system permissions, add the following lines to your AndroidManifest.xml file.

AndroidManifest.xml
Light Color Skin
Copy
<uses-permission android:name="android.permission.INTERNET" />

Step 3 (Optional) Configure ProGuard to shrink code and resources

When you build your APK with minifyEnabled true, add the following line to the module's ProGuard rules file.

Light Color Skin
Copy
-dontwarn com.sendbird.android.shadow.**

Step 4 Initialize the Chat SDK

Now, initialize the Chat SDK in the app to allow the Chat SDK to respond to changes in the connection status of Android client apps. Initialization requires the App ID, which can be found in the which can be found on the Sendbird Dashboard.

Note: The methods in the following steps are all asynchronous, excluding the SendBird.init() method. This means that when using asynchronous methods, your client app must receive success callbacks from Sendbird server through their callback handlers in order to proceed to the next step. A good way to do this is the nesting of methods: Go to Step 7: Enter the channel to learn more about how you can nest the openChannel.enter() in the OpenChannel.getChannel() method.

Light Color Skin
Copy
// Initialize SendBird instance to use APIs in your app.
SendBird.init(APP_ID, getApplicationContext());

Note: The SendBird.init() method must be called across a client app at least once. It is recommended to initialize the Chat SDK with the onCreate() method of the Application instance.

Step 5 Connect to Sendbird server

You will need a user in order to send a message to a channel. You can either create a user on our dashboard or you can use a unique ID that hasn’t been taken by any of your Sendbird application users. In the latter case, a new user will be automatically created in your Sendbird application before being connected.

Note: To learn more about authenticating with an access token, go to Authentication.

Light Color Skin
Copy
// The USER_ID below should be unique to your Sendbird application.
SendBird.connect(USER_ID, new SendBird.ConnectHandler() {
    @Override
    public void onConnected(User user, SendBirdException e) {
        if (e != null) {
            // Handle error.
        }

        // The user is connected to Sendbird server.
    }
});

Step 6 Create a new open channel

Create an open channel using the following codes. Open channels are where all users in your Sendbird application easily participate without an invitation.

Light Color Skin
Copy
OpenChannel.createChannel(new OpenChannel.OpenChannelCreateHandler() {
    @Override
    public void onResult(OpenChannel openChannel, SendBirdException e) {
        if (e != null) {
            // Handle error.
        }

        // An open channel is successfully created.
        // Through the "openChannel" parameter of the onResult() callback method,
        // you can get the open channel's data from the result object that Sendbird server has passed to the onResult().
    }
});

Note: You can also create a group channel to send a message. To learn more, see Create a channel in the Group channel page.

Step 7 Enter the channel

Enter the channel to send and receive messages.

Light Color Skin
Copy
// The CHANNEL_URL below can be retrieved using the openChannel.getUrl().
OpenChannel.getChannel(CHANNEL_URL, new OpenChannel.OpenChannelGetHandler() {
    @Override
    public void onResult(OpenChannel openChannel, SendBirdException e) {
        if (e != null) {
            // Handle error.
        }

        // Call the instance method of the result object in the "openChannel" parameter of the onResult() callback method.
        openChannel.enter(new OpenChannel.OpenChannelEnterHandler() {
            @Override
            public void onResult(SendBirdException e) {
                if (e != null) {
                    // Handle error.
                }

                // The current user successfully enters the open channel,
                // and can chat with other users in the channel by using APIs.
            }
        });
    }
});

Step 8 Send a message to the channel

Finally, send a message to the channel. To learn more about the message type you can send, see Messages.

Light Color Skin
Copy
openChannel.sendUserMessage(MESSAGE, new BaseChannel.SendUserMessageHandler() {
    @Override
    public void onSent(UserMessage userMessage, SendBirdException e) {
        if (e != null) {
            // Handle error.
        }

        // The message is successfully sent to the channel.
        // The current user can receive messages from other users through the onMessageReceived() method of an event handler.
    }
});

Step 9 Receive a message

Add the onMessageReceived() channel event handler using the Sendbird.addChannelHandler() method so that you can receive the message you just sent to the channel. You can also see the message in our dashboard.

Light Color Skin
Copy
SendBird.addChannelHandler(UNIQUE_HANDLER_ID, new SendBird.ChannelHandler() { // Replace the `UNIQUE_HANDLER_ID` with a unique identifier for this handler.

    @Override
    public void onMessageReceived(BaseChannel baseChannel, BaseMessage baseMessage) {
    }
});