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.
The minimum requirements for Chat SDK for iOS are the following.
macOS
Xcode 13 and later
At least one device running iOS 9.0 and later
Swift 5.0 and later or Objective-C
Note: The 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 installing Sendbird Chat SDK, you need to create a Sendbird application on Sendbird Dashboard, which comprises everything required in a chat service including users, messages, and channels. You need the Application ID of your Sendbird application from the dashboard when initializing the Chat SDK.
Go to Sendbird Dashboard and create an account for a free trial. If you already have a Sendbird account, sign into your account.
Create a new application by clicking Create + at the bottom right of your screen.
Enter a name for your application. Choose a Product Type and Region. Then, click Confirm.
Click the application you just created under Applications. You will see the Application ID on the overview page which you will need when initializing the Chat SDK.
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.
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.
Sendbird provides various access control options when using the Chat SDK. By default, the following attributes are turned on to avoid unexpected errors when creating sample apps and sending your first message:
Allow retrieving user list
Allow updating user metadata
Allow creating open channels
Allow creating group channels
However, this may grant access to unwanted data or operations, leading to potential security concerns. To manage your access control settings, you can turn on or off each option in Settings > Application > Security > Access control list on Sendbird Dashboard.
To send a message in a client app, you should build and configure an in-app chat using Sendbird Chat SDK.
Some methods in the following steps are asynchronous. When using asynchronous methods, client apps must receive success callbacks from the Sendbird server through completion delegates in order to proceed to the next step. A good way to achieve this is by nesting the methods.
Note: For best performance, subclassing isn't recommended in Sendbird Chat SDK v4 for iOS. Using subclassing may result in errors that demand more time to be resolved.
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.
Open a terminal window, move to your project directory, and then create a Podfile by running the following command.
$ pod init
A Podfile will be created in your project folder. Open the Podfile and modify the file like the following.
platform :ios, '9.0'
target 'YOUR_PROJECT_NAME' do
# Comment out the next line if you don't want to use dynamic frameworks.
use_frameworks!
# Pods for YOUR_PROJECT_NAME.
pod 'SendbirdChatSDK', '~> 4.0.0'
end
Then install the SendbirdChatSDK framework by running the following command in the same terminal window.
$ pod install
In the folder, you will see a new project file in the .xcworkspace format. Now you can build your project with the SendbirdChatSDK framework in the file.
Open a terminal window and add the following line to create a Cartfile in your project folder.
$ touch Cartfile
Move to your project directory, open the Cartfile, and add the following line to your Cartfile.
github "sendbird/sendbird-chat-sdk-ios"
Run the carthage update command to download Sendbird Chat SDK for iOS.
$ carthage update --use-xcframeworks
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 SendbirdChatSDK.xcframework folder to the Frameworks, Libraries, and Embedded section in Xcode.
Now, initialize the Chat SDK in the app to allow the Chat SDK to respond to changes according to the connection status in iOS client apps. Initialization requires your Sendbird application's APP_ID, which can be found on Sendbird Dashboard.
The completionHandler method gets the initialization status through different event handlers. The migrationStartHandler method is called when there's an upgrade in the local database. Meanwhile, the completionHandler method informs the client app whether the initialization is complete.
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.
To learn about using a token to authenticate a user, see the authentication page.
SendbirdChat.connect(userId: USER_ID) { user, error in
guard let user = user, error == nil else {
// Handle error.
return
}
// The user is connected to the Sendbird server.
}
Create an open channel using the following code blocks. Open channels are where all users in your Sendbird application can easily participate without an invitation.
let params = OpenChannelCreateParams()
params.name = CHANNEL_NAME
OpenChannel.createChannel(params: params) { channel, error in
guard let channel = channel, error == nil else {
// Handle error.
return
}
// An open channel is successfully created.
// Through the channel 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 the create a channel page.
Enter the open channel to send and receive messages.
let params = OpenChannelCreateParams()
params.name = CHANNEL_NAME
// The following sample code continues from Step 6.
OpenChannel.createChannel(params: params) { channel, error in
guard let channel = channel, error == nil else {
// Handle error.
return
}
channel.enter { error in
guard error == nil else {
// Handle error.
return
}
// The current user has successfully entered the open channel
// and can chat with other users in the channel using APIs.
}
}
channel.sendUserMessage(MESSAGE) { message, error in
guard let message = message, error == nil else {
// Handle error.
return
}
// The message object is successfully sent to the channel object.
// The current user can receive messages from other users through
// the channel(_:didReceiveMessage:) method of an event delegate.
}