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 14.1 and later
At least one device running iOS 11.0 and later
Swift 4.0 and later
Objective-C
Note: Starting on April 25, 2023, you must build and test your app with Xcode 14.1 or later to submit to the App Store. You can use the existing Sendbird SDK versions built with both Xcode 13.x and Xcode 14.1+ but Sendbird is repackaging Chat for iOS with Xcode 14.1 and minimum iOS version of 11.0 starting on April 25, 2023.
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.
Access control list
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.
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 theenterChannelWithCompletionHandler:
in thecreateChannel: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.
-
Open Xcode, go to your project's General settings tab, and select your project under Project in the left column.
-
Go to the Swift packages tab and click the + button.
- When a pop-up shows, enter our github repository address in the search bar. The address is
https://github.com/sendbird/SendBird-iOS-framework
.
- Set Rules and click Next.
- Check
SendBirdSDK
in the Package product column and click Finish. This will establish a Swift Package Dependency menu in Xcode.
CocoaPods
- Open a terminal window, move to your project directory, and then create a Podfile by running the following command.
- A Podfile will be created in your project folder. Open the Podfile and modify the file like the following.
- Then install the
SendBirdSDK
framework by running the following command in the same terminal window.
- In the folder, you will see a new project file in the
.xcworkspace
format. Now you can build your project with theSendBirdSDK
framework in the file.
Carthage
- Open a terminal window and add the following line to create a Cartfile in your project folder.
- Move to your project directory, open the Cartfile, and add the following line to your Cartfile.
- Run the carthage update command to download Sendbird Chat SDK for iOS.
- 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.
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 your project 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 Sendbird Dashboard.
With local caching, two new parameters have been added to the initialization code, which are useCaching
and completionHandler:
.
The useCaching
determines whether the client app will use the local storage through Sendbird Chat SDK or not. If you want to build a client app with our local caching functionalities, set the useCaching
to true.
The completionHandler:
gets the initialization status through different event handlers. For Objective-C, the migrationStartHandler:
is called when there's an upgrade in the local database. Meanwhile, the completionHandler:
informs the client app whether the initialization is completed.
If the initialization fails when you set the useCaching
to true, the SDK will operate normally and change the value of the useCaching
to false. If you still wish to use the local caching, clear the database using the clearCachedDataWithCompletionHandler:
and try the initialization again with the useCaching
set to true.
Note: The
initWithApplicationId:
method of aSBDMain
instance must be called across a client app at least once. We recommend that you initialize Sendbird Chat SDK through theapplication:didFinishLaunchingWithOptions:
method of theAppDelegate
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.
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.
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.
Step 8 Send a message to the channel
Finally, send a message to the channel. To learn about the message types you can send, refer to Message overview in Chat Platform API.
You can check the message you've sent in Sendbird Dashboard. To learn about receiving a message, refer to the receive messages through a channel event handler page.