Official iOS SDK for Stream Chat
stream-chat-swift is the official iOS SDK for Stream Chat, a service for building chat and messaging applications.
Quick Links
- Register to get an API key for Stream Chat
- iOS/Swift Chat Tutorial
- Chat UI Kit
The best place to start is the iOS Swift Chat Tutorial. It teaches you how to use this SDK and also shows how to make common changes.
This repo includes a fully functional example app. You can run the example app by following these steps:
- Make sure you have Xcode 11 installed and that it has latest components installed (open Xcode and install any pending update)
- Download the StreamChat repo:
git clone [email protected]:GetStream/stream-chat-swift.git
- Change the directory:
cd stream-chat-swift/Example/Cocoapods
- Install the Cocoapods:
sudo gem install cocoapods
- Install dependencies:
pod install --repo-update
Analyzing dependencies
Downloading dependencies
Installing GzipSwift (5.0.0)
Installing Nuke (8.2.0)
Installing ReachabilitySwift (4.3.1)
Installing RxAppState (1.6.0)
Installing RxCocoa (5.0.1)
Installing RxGesture (3.0.1)
Installing RxRelay (5.0.1)
Installing RxSwift (5.0.1)
Installing SnapKit (5.0.1)
Installing Starscream (3.1.1)
Installing StreamChat (1.5.4)
Installing StreamChatCore (1.5.4)
Installing SwiftyGif (5.1.1)
Generating Pods project
Integrating client project
Pod installation complete! There are 2 dependencies from the Podfile and 13 total pods installed.
- Open the project:
open ChatExample.xcworkspace
- Select
ChatExample
as an active scheme (if needed):
- Click build and run.
You'll typically want to start out using the UI components, and implement your own components using the Swift Chat API as needed.
- iOS 11+
- Xcode 11.2+
- Swift 5.1
- CocoaPods 1.7+
- Carthage 0.33.0+
Stream Chat SDK consists of two frameworks: StreamChat
and StreamChatCore
StreamChat
— the full SDK library with all UI components. Styling and deep customizations are all supported out of the box.StreamChatCore
— low-level library to use Stream Chat APIs. It includes models, presenters, notification manager and HTTP interface.
To integrate StreamChat into your Xcode project using CocoaPods, add this entry in your Podfile
:
pod 'StreamChat'
Then run pod install
.
If you want to use only StreamChatCore
, you can add this entry in your Podfile
:
pod 'StreamChatCore'
In any file you'd like to use Stream Chat in, don't forget to import the frameworks:
import StreamChat
or StreamChatCore
if you are working with the low-level client:
import StreamChatCore
To integrate Stream Chat into your Xcode project using Carthage, specify it in your Cartfile
:
github "GetStream/stream-chat-swift"
Then run: carthage update --platform iOS --new-resolver
. This will build frameworks: StreamChatCore.framework
and StreamChat.framework
into <Path to your Project>/Carthage/Build/iOS/
from where you can add them to your project and link them with your app target. Follow with these steps:
- Open your Xcode project
- Select the project in the Navigator
- Select your app target
- Open
General
panel - Open
<Path to your Project>/Carthage/Build/iOS/
in Finder and findStreamChatCore.framework
, drag and drop it intoFrameworks, Libraries and Embedded Content
area in Xcode. Do the same forStreamChat.framework
if you need UI components. - After adding libraries, select "Do Not Embed" option in "Embed" section. (Right next to the library name after adding it)
- Open
Build Phases
panel in Xcode - Click the
+
button and selectNew Run Script Phase
- Set the content to:
/usr/local/bin/carthage copy-frameworks
- Add to
Input Files
:$(SRCROOT)/Carthage/Build/iOS/StreamChatCore.framework
$(SRCROOT)/Carthage/Build/iOS/StreamChat.framework
(if you need UI components)
- Add to
Output Files
:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/StreamChatCore.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/StreamChat.framework
(if you need UI components)
Now you can build your app and use StreamChat
.
- Group chat
- Channel list
- Reactions
- Rich link preview (e.g. open graph)
- Attachments (images, videos and files)
- Commands (e.g.
/giphy
) - Editing messages
- Typing events
- Read events
- Threads
- Notifications
- Opening a link in the internal browser
- Image gallery
- GIF support
- Light/Dark theme
- Style customization
- UI customization