Home
/
Chat
/
iOS

Send your first message

With Sendbird Chat SDK for iOS, 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 the chat service within your 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 iOS are:

  • Mac OS with developer mode enabled
  • Xcode
  • At least one device running iOS 9.0 and later
  • Swift 4.0 and later
  • Objective-C

Note: Sendbird server supports Transport Layer Security (TLS) from version 1.0 up to 1.3. For example, in the server regions where TLS 1.3 isn’t available, lower versions, sequentially from 1.2 to 1.0, will be 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 iOS.


Get started

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

Note: The methods in the following steps are all asynchronous, excluding the initWithApplicationId:. This means that when using asynchronous methods, client apps must receive success callbacks from Sendbird server through completion delegates 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 to nest the enterChannelWithCompletionHandler: in the getChannelWithUrl:completionHandler: method.

Step 1 Create a project

Create an Xcode project.

Step 2 Install the Chat SDK

Installing the Chat SDK is simple if you’re familiar with using external libraries or SDK’s in your projects. Sendbird Chat SDK can be installed through either Swift Packages, CocoaPods, or Carthage.

Note: If you don't want to use package managers, check out the manual installation guide.

Swift Packages

You can use an Xcode native package manager Swift Packages for installation.

  1. Open Xcode, go to your project's General settings tab, and select your project under Project in the left column.

  2. Go to the Swift packages tab and click the + button.

  1. When a pop-up shows, enter our github repository address in the search bar. The address is https://github.com/sendbird/SendBird-iOS-framework.

  1. Set Rules and click Next.

  1. Check SendBirdSDK in the Package product column and click Finish. This will establish a Swift Package Dependency menu in Xcode.

CocoaPods

  1. Open a terminal window, move to your project directory, and then create a Podfile by running the following command.
Light Color Skin
Copy
$ pod init
  1. A Podfile will be created in your project folder. Open the Podfile and modify the file like the following.
Light Color Skin
Copy
# platform :ios, '9.0'

target 'YOUR_PROJECT_NAME' do
    # Comment the next line if you don't want to use dynamic frameworks
    use_frameworks!

    # Pods for `YOUR_PROJECT_NAME`
        pod SendBirdSDK
end
  1. Then install the SendBirdSDK framework by running the following command in the same terminal window.
Light Color Skin
Copy
$ pod install
  1. In the folder, you will see a new project file in the .xcworkspace format. Now you can build your project with the SendBirdSDK framework in the file.

Carthage

  1. Open a terminal window and add the following line to create a Cartfile in your project folder.
Light Color Skin
Copy
$ touch Cartfile
  1. Move to your project directory, open the Cartfile, and add the following line to your Cartfile.
Light Color Skin
Copy
github "sendbird/sendbird-ios-framework"
  1. Run the carthage update command to download Sendbird Chat SDK for iOS.
Light Color Skin
Copy
$ carthage update
  1. Once the update is complete, go to your Xcode project's General settings tab. Then, open the <YOUR_XCODE_PROJECT_DIRECTORY>/Carthage/Build/iOS in the Finder window and drag and drop the SendBirdSDK.framework folder to the Frameworks, Libraries, and Embedded section in Xcode.

Step 3 Import the Chat SDK

With one simple import statement, you can use all classes and methods in both Swift and Objective-C without a bridging header file.

Swift
Objective-C
Light Color Skin
Copy
import SendBirdSDK
Light Color Skin
Copy
#import <\SendBirdSDK/SendBirdSDK.h>

Note: Interacting with Objective-C APIs in Swift can help you understand how to use the Chat SDK in Swift syntax.

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 in iOS client apps. Initialization requires the App ID, which can be found in the Sendbird Dashboard.

Swift
Objective-C
Light Color Skin
Copy
SBDMain.initWithApplicationId(APP_ID)   // Replace `APP_ID` with
                                        // your own Sendbird application ID.
Light Color Skin
Copy
[SBDMain initWithApplicationId:APP_ID]; // Replace `APP_ID` with
                                        // your own Sendbird application ID.

Note: The initWithApplicationId: method of a SBDMain instance must be called across a client app at least once. We recommend that you initialize Sendbird Chat SDK through the application:didFinishLaunchingWithOptions: method of the AppDelegate 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 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.

Swift
Objective-C
Light Color Skin
Copy
SBDMain.connect(withUserId: USER_ID) { user, error in
        guard let user = user, error == nil else {
                return // Handle error.
        }

        // The user is connected to the Sendbird server.
}
Light Color Skin
Copy
[SBDMain connectWithUserId:USER_ID completionHandler:^(SBDUser * _Nullable user, SBDError * _Nullable error) {
        if (error != nil) {
                // Handle error.
        }

        // The user is connected to the 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 can easily participate without an invitation.

Swift
Objective-C
Light Color Skin
Copy
SBDOpenChannel.createChannel(with: params) { channel, error in
        guard let channel = channel, error == nil else {
                return // Handle error.
        }

        // An open channel is successfully created.
        // Through the "openChannel" parameter of the callback method,
        // you can get the open channel's data from the Sendbird server.
}
Light Color Skin
Copy
[SBDOpenChannel createChannelWithCompletionHandler:^(SBDOpenChannel * _Nullable openChannel, SBDError * _Nullable error) {
        if (error != nil) {
                // Handle error.
        }

        // An open channel is successfully created.
        // Through the "openChannel" parameter of the callback method,
        // you can get the open channel's data from the Sendbird server.
        ...
}];

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 open channel to send and receive messages.

Swift
Objective-C
Light Color Skin
Copy
SBDOpenChannel.getWithUrl(CHANNEL_URL) { openChannel, error in
        guard let openChannel = openChannel, error == nil else {
                return // Handle error.
        }
        // Call the instance method of the result object in the "openChannel" parameter of the callback method.

        openChannel.enter(completionHandler: { error in
                guard error == nil else {
            return
                }
                // The current user successfully enters the open channel,
                // and can chat with other users in the channel by using APIs.
        }
}
Light Color Skin
Copy
[SBDOpenChannel getChannelWithUrl:CHANNEL_URL completionHandler:^(SBDOpenChannel * _Nullable openChannel, SBDError * _Nullable error) {
        if (error != nil) {
                // Handle error.
        }

        // Call the instance method of the result object
        // in the "openChannel" parameter of the callback method.
        [openChannel enterChannelWithCompletionHandler:^(SBDError * _Nullable error) {
                if (error != nil) {
                        // 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 you entered. To learn more about the message type you can send, see Messages.

Swift
Objective-C
Light Color Skin
Copy
openChannel.sendUserMessage(MESSAGE) { userMessage, error in
        guard let userMessage = userMessage, error == nil else {
                return // Handle error.
        }


        // The message is successfully sent to the channel.
        // The current user can receive messages from other users through the channel:didReceiveMessage: method of an event delegate.
        ...
}
Light Color Skin
Copy
[openChannel sendUserMessage:MESSAGE data:DATA customType:CUSTOM_TYPE completionHandler:^(SBDUserMessage * _Nullable userMessage, SBDError * _Nullable error) {
        if (error != nil) {
                // Handle error.
        }

        // The message is successfully sent to the channel.
        // The current user can receive messages from other users through the channel:didReceiveMessage: method of an event delegate.
        ...
}];

Step 9 Receive a message

Add the SBDChannelDelegate.channel(:didReceiveMessage:) event delegate using the SBDMain.add(delegate:identifier:) method so that you can receive the message you just sent to the channel. You can also see the message on our dashboard.

Swift
Objective-C
Light Color Skin
Copy
class ViewController: UIViewController, SBDChannelDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        SBDMain.add(self, identifier: CLASS_IDENTIFIER) // Replace the `CLASS_IDENTIFIER` with a unique identifier for this delegate.
    }

    func channel(_ sender: SBDBaseChannel, didReceive message: SBDBaseMessage) {
        // A `message` is received in the `sender` channel.
    }
}
Light Color Skin
Copy
@interface ViewController : UIViewController
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [SBDMain addChannelDelegate:self identifier:CLASS_IDENTIFIER]; // Replace CLASS_IDENTIFIER with a unique identifier for this delegate.
}
- (void)channel:(SBDBaseChannel *)sender didReceiveMessage:(SBDBaseMessage *)message {
    // a `message` is received through the `sender` channel
}
@end