{"id":14964941,"url":"https://github.com/sendbird/sendbird-uikit-ios","last_synced_at":"2025-10-06T12:09:27.018Z","repository":{"id":43176371,"uuid":"246224654","full_name":"sendbird/sendbird-uikit-ios","owner":"sendbird","description":"Sendbird UIKit for iOS is a development kit with a user interface, offering a simplified integration into chat.","archived":false,"fork":false,"pushed_at":"2025-08-19T02:34:06.000Z","size":2335666,"stargazers_count":115,"open_issues_count":2,"forks_count":75,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-09-30T07:37:48.062Z","etag":null,"topics":["api-for-chat","bard","chat-api","chat-api-platform","chat-platform","chat-sdk","chat-ui","chatbot-api","chatbot-ui","chatgpt","communications-platform","genai-chatbot","genai-chatbot-api","gpt-powered-chatbot","gpt-ui","llama2","messaging-api","messaging-platform","messaging-sdk","palm2"],"latest_commit_sha":null,"homepage":"https://sendbird.com/docs/chat/uikit/v3/ios-uikit/overview","language":"Swift","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sendbird.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-10T06:28:04.000Z","updated_at":"2025-09-29T07:47:34.000Z","dependencies_parsed_at":"2024-03-18T09:45:35.913Z","dependency_job_id":"03647519-54e8-44f0-8044-884cfa7c917a","html_url":"https://github.com/sendbird/sendbird-uikit-ios","commit_stats":{"total_commits":213,"total_committers":13,"mean_commits":"16.384615384615383","dds":0.5305164319248826,"last_synced_commit":"02d5a8374646137cf8e67e02859b529d10d25abf"},"previous_names":[],"tags_count":164,"template":false,"template_full_name":null,"purl":"pkg:github/sendbird/sendbird-uikit-ios","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sendbird%2Fsendbird-uikit-ios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sendbird%2Fsendbird-uikit-ios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sendbird%2Fsendbird-uikit-ios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sendbird%2Fsendbird-uikit-ios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sendbird","download_url":"https://codeload.github.com/sendbird/sendbird-uikit-ios/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sendbird%2Fsendbird-uikit-ios/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278592819,"owners_count":26012382,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-for-chat","bard","chat-api","chat-api-platform","chat-platform","chat-sdk","chat-ui","chatbot-api","chatbot-ui","chatgpt","communications-platform","genai-chatbot","genai-chatbot-api","gpt-powered-chatbot","gpt-ui","llama2","messaging-api","messaging-platform","messaging-sdk","palm2"],"created_at":"2024-09-24T13:34:00.104Z","updated_at":"2025-10-06T12:09:27.011Z","avatar_url":"https://github.com/sendbird.png","language":"Swift","readme":"# [Sendbird](https://sendbird.com) UIKit for iOS\n\n[![Platform](https://img.shields.io/badge/platform-iOS-orange.svg)](https://cocoapods.org/pods/SendBirdUIKit)\n[![Languages](https://img.shields.io/badge/language-Swift-orange.svg)](https://github.com/sendbird/sendbird-uikit-ios)\n[![CocoaPods](https://img.shields.io/badge/CocoaPods-compatible-green.svg)](https://cocoapods.org/pods/SendBirdUIKit)\n[![Swift Package Manager](https://img.shields.io/badge/SPM-compatible-green.svg)](https://github.com/sendbird/sendbird-uikit-ios-spm)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-green.svg?style=flat)](https://github.com/Carthage/Carthage)\n[![Commercial License](https://img.shields.io/badge/license-Commercial-green.svg)](https://github.com/sendbird/sendbird-uikit-ios/blob/main/LICENSE.md)\n\nWe are introducing a new version of the Sendbird UIKit. Version 3 features a new modular architecture with more granular components that give you enhanced flexibility to customize your web and mobile apps. Check out our [migration guides](changelogs/MIGRATION_GUIDE_V3.md) and download our [samples](/Sample)\n\n\nWith the official release of the v3 version, the name of the `master` branch was changed to the `main` branch, and the `main` branch was changed to the contents of the v3. If you have to keep using v2, please use the `main-v2` branch.\n* v3: `main`\n* v2: `main-v2`\n\n\n## Table of contents\n\n  1. [Introduction](#introduction)\n  1. [Before getting started](#before-getting-started)\n  1. [Getting started](#getting-started)\n  1. [Implementation guide](#implementation-guide) \n  1. [UIKit at a glance](#uikit-at-a-glance)  \n  \n\u003cbr /\u003e\n\n## Introduction\n\n**Sendbird UIKit** for iOS is a development kit with an user interface that enables an easy and fast integration of standard chat features into new or existing client apps. From the overall theme to individual styles such as colors and fonts, components can be fully customized to create an in-app chat experience unique to your brand identity.\n\n\u003e **Note**: Currently, UIKit for iOS now supports both group channels and open channels.\n\n![ThemeLight](https://static.sendbird.com/docs/uikit/ios/theme-light_20200416.png)\n\nThis repository houses the UIKit source code and UIKit sample in addition to a UIKit Framework.\n- **Sources** is where you can find the open source code. Check out [UIKit Open Source Guidelines](/OPENSOURCE_GUIDELINES.md) for more information regarding our stance on open source.\n- **Sample** is a chat app which contains custom sample code for various key features written in `Swift`. \n\n### Benefits\n\n- Easy installation\n- Fully-featured chat with a minimal amount of code\n- Customizable components, events, and views\n- Customizable user list to enable chat among specified users\n\n### More about Sendbird UIKit for iOS\n\nFind out more about Sendbird UIKit for iOS on [UIKit for iOS doc](https://sendbird.com/docs/uikit/v1/ios/getting-started/about-uikit). If you have any comments or questions regarding bugs and feature requests, visit [Sendbird community](https://community.sendbird.com). \n\n\u003cbr /\u003e\n\n## Before getting started\n\nThis section shows the prerequisites you need to check to use Sendbird UIKit for iOS.\n\n### Requirements\n\nThe minimum requirements for Sendbird UIKit for iOS are:\n\n- iOS 13+\n- Swift 5.10+\n- Sendbird Chat SDK for iOS 4.29.2+\n\n\u003cbr /\u003e\n\n## Getting started\n\nThis section gives you information you need to get started with Sendbird UIKit for iOS.\n\n### Try the sample app\n\nOur sample app has all the core features of Sendbird UIKit for iOS. Download the app from our GitHub repository to get an idea of what you can build with the actual UIKit before building your own project.\n\n- [Samples](/Sample)\n\n\n### Create a project\n\nYou can get started by creating a project. Sendbird UIKit support `Swift`, so you can create and work on a project in the language you want to develop with.\n\n![Create a project](https://static.sendbird.com/docs/uikit/ios/getting-started-01_20200416.png)\n\n\n### Install UIKit for iOS \n\nUIKit for iOS can be installed through either [`CocoaPods`](https://cocoapods.org/), [`Carthage`](https://github.com/Carthage/Carthage) or [`Swift Package Manager`](https://swift.org/package-manager/): \n\n\u003e Note: Sendbird UIKit for iOS is Sendbird Chat SDK-dependent.\n\n\n#### - Swift Packages\n\n1. Go to your Swift Package Manager's **File** tab and select **Swift Packages**. Then choose **Add package dependency...**.\n\n2. Add `SendbirdUIKit` into your `Package Repository` as below:\n\n```bash\nhttps://github.com/sendbird/sendbird-uikit-ios-spm.git\n```\n\n3. Swift Package Manager automatically sets the dependency rule to \"Up To Next Major\" and installs the latest version. Adjust the dependency rule and version according to your needs. You can check out the latest UIKit version on [UIKit releases](https://github.com/sendbird/sendbird-uikit-ios-spm/releases).\n\n#### - CocoaPods\n\n1. Add `SendBirdUIKit` into your `Podfile` in Xcode as below:\n\n```bash\nplatform :ios, '13.0'\nuse_frameworks!\n\ntarget YOUR_PROJECT_TARGET do\n    pod 'SendBirdUIKit'\nend\n```\n\n2. Install the `SendbirdUIKit` framework through `CocoaPods`.\n\n```bash\n$ pod install\n```\n\n3. Update the `SendbirdUIKit` framework through `CocoaPods`.\n\n```bash\n$ pod update\n```\n\n\u003e Note: Cocoapod uses the name of Send**B**irdUIKit, not Send**b**irdUIKit.\n\n#### - Carthage\n\n1. Add `SendbirdUIKit` and `SendBirdSDK` into your `Cartfile` as below:\n\n```bash\ngithub \"sendbird/sendbird-uikit-ios\"\ngithub \"sendbird/sendbird-chat-sdk-ios\"\n```\n\n2. Install the `SendbirdUIKit` framework through `Carthage`.\n\n```bash\n$ carthage update --use-xcframeworks\n```\n\n\u003e __Note__: Building or creating the `SendbirdUIKit` framework with `Carthage` can only be done using the latest `Swift`. If your `Swift` is not the most recent version, the framework should be copied into your project manually.\n\n3. Go to your Xcode project target's **General settings** tab in the `Frameworks and Libraries` section. Then drag and drop `SendbirdUIKit.framework` from the `\u003cYOUR_XCODE_PROJECT_DIRECTORY\u003e/Carthage/Build` folder.\n\n### Get attachment permission\n\nSendbird UIKit offers features to attach or save files such as photos, videos, and documents. To use those features, you need to request permission from end users.\n\n#### - Media attachment permission\n\nApplications must acquire permission from end users to use their photo assets or to save assets into their library. Once the permission is granted, users can send image or video messages and save media assets.\n\n```xml\n...\n\u003ckey\u003eNSPhotoLibraryUsageDescription\u003c/key\u003e\n    \u003cstring\u003e$(PRODUCT_NAME) would like access to your photo library\u003c/string\u003e\n\u003ckey\u003eNSCameraUsageDescription\u003c/key\u003e\n    \u003cstring\u003e$(PRODUCT_NAME) would like to use your camera\u003c/string\u003e\n\u003ckey\u003eNSMicrophoneUsageDescription\u003c/key\u003e\n    \u003cstring\u003e$(PRODUCT_NAME) would like to use your microphone (for videos)\u003c/string\u003e\n\u003ckey\u003eNSPhotoLibraryAddUsageDescription\u003c/key\u003e\n    \u003cstring\u003e$(PRODUCT_NAME) would like to save photos to your photo library\u003c/string\u003e\n...\n\n```\n\n![Media attachment permission](https://static.sendbird.com/docs/uikit/ios/getting-started-02_20200416.png)\n\n#### *(Optional)* Document attachment permission\n\nIf you want to attach files from `iCloud`, you must activate the `iCloud` feature. Once it is activated, users can also send a message with files from `iCloud`. \n\nGo to your Xcode project's **Signing \u0026 Capabilities** tab. Then, click **+ Capability** button and select **iCloud**. Check **iCloud Documents**.\n\n![Document attachment permission](https://static.sendbird.com/docs/uikit/ios/getting-started-03_20200416.png)\n\n\u003cbr /\u003e\n\n## Implementation guide\n\n### Initialize with APP_ID\n\nIn order to use the Chat SDK's features, you must initialize the `SendbirdUIKit` instance with `APP_ID`. This step also initializes the Chat SDK for iOS. \n\nInitialize the `SendbirdUIKit` instance through `AppDelegate` as below:\n\n```swift\n// AppDelegate.swift\n\nimport SendbirdUIKit\n\nfunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -\u003e Bool {\n    \n    let APP_ID = \"2D7B4CDB-932F-4082-9B09-A1153792DC8D\"    // The ID of the Sendbird application which UIKit sample app uses.\n    SendbirdUI.initialize(applicationId: APP_ID) {\n        // Do something to display the start of the SendbirdUIKit initialization.\n    } migrationHandler: {\n        // Do something to display the progress of the DB migration.\n    } completionHandler: { error in\n        // Do something to display the completion of the SendbirdChat initialization.\n    }\n    \n}\n```\n\n\u003e **Note**: In the above, you should specify the ID of your Sendbird application in place of the `APP_ID`.\n\n### Set the current user\n\nUser information must be set as `currentUser` in the `SBUGlobal` prior to launching Sendbird UIKit. This information will be used within the kit for various tasks. The `userId` field must be specified whereas other fields such as `nickname` and  `profileURL` are optional and filled with default values if not specified.  \n\nSet the `currentUser` for UIKit through the `AppDelegate` as below:\n\n\u003e **Note**: Even if you don’t use the `AppDelegate`, you should register user information before launching a chat service.\n \n```swift\n// AppDelegate.swift\n\nimport SendbirdUIKit\n\nfunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -\u003e Bool {\n    \n    // Case 1: USER_ID only\n    SBUGlobals.currentUser = SBUUser(userId: {USER_ID})\n    \n    // Case 2: Specify all fields\n    SBUGlobals.currentUser = SBUUser(userId: {USER_ID}, nickname:{(opt)NICKNAME} profileURL:{(opt)PROFILE_URL})\n    \n}\n```\n\n\u003e **Note**: If the `currentUser` is not set in advance, there will be restrictions to your usage of UIKit.\n\n### Channel list\n\nUIKit allows you to create a channel specifically for 1-on-1 chat and to list 1-on-1 chat channels so that you can easily view and manage them. With the `SBUChannelListViewController` class, you can provide end users a complete chat service featuring a [List channels](https://sendbird.com/docs/uikit/v3/ios/key-functions/list-channels). \n\nImplement the code below wherever you want to start UIKit.\n\n```swift\nimport SendbirdUIKit\n\nlet groupChannelListVC = SBUGroupChannelListViewController()\nlet naviVC = UINavigationController(rootViewController: groupChannelListVC)\nself.present(naviVC, animated: true)\n\n```\n\n\u003e__Note__: If you are already using a navigation controller, you can use `pushViewController` function.\n\n\u003e **Note**: **At this point**, you can confirm if the service is working by running your client app.\n\n### Channel\n\nWith the `SBUGroupChannelViewController` class, you can build a channel-based chat service instead of a channel list-based one.\n\n\u003e **Note**: You should have either a `Channel` object or a `ChannelURL` in order to run a channel-based chat service. \n\nUse the following code to implement the chat service.\n\n```swift\nimport SendbirdUIKit\n\nlet channelVC = SBUGroupChannelViewController(channelURL: {CHANNEL_URL})\nlet naviVC = UINavigationController(rootViewController: channelVC)\npresent(naviVC, animated: true)\n\n```\n\n### Distribution setting \n\nUIKit is distributed in the form of a fat binary, which contains information on both **Simulator** and **Device** architectures. Add the script below if you are planning to distribute your application in the App Store and wish to remove unnecessary architectures in the application's build phase.\n\nGo to your Xcode project target's **Build Phases** tab. Then, click **+** and select **New Run Script Phase**. Append this script.\n\n```bash\nAPP_PATH=\"${TARGET_BUILD_DIR}/${WRAPPER_NAME}\"\n\n# This script loops through the frameworks embedded in the application and\n# removes unused architectures.\nfind \"$APP_PATH\" -name '*.framework' -type d | while read -r FRAMEWORK\ndo\n    FRAMEWORK_EXECUTABLE_NAME=$(defaults read \"$FRAMEWORK/Info.plist\" CFBundleExecutable)\n    FRAMEWORK_EXECUTABLE_PATH=\"$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME\"\n    echo \"Executable is $FRAMEWORK_EXECUTABLE_PATH\"\n    \n    EXTRACTED_ARCHS=()\n    \n    for ARCH in $ARCHS\n    do\n        echo \"Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME\"\n        lipo -extract \"$ARCH\" \"$FRAMEWORK_EXECUTABLE_PATH\" -o \"$FRAMEWORK_EXECUTABLE_PATH-$ARCH\"\n        EXTRACTED_ARCHS+=(\"$FRAMEWORK_EXECUTABLE_PATH-$ARCH\")\n    done\n    \n    echo \"Merging extracted architectures: ${ARCHS}\"\n    lipo -o \"$FRAMEWORK_EXECUTABLE_PATH-merged\" -create \"${EXTRACTED_ARCHS[@]}\"\n    rm \"${EXTRACTED_ARCHS[@]}\"\n    \n    echo \"Replacing original executable with thinned version\"\n    rm \"$FRAMEWORK_EXECUTABLE_PATH\"\n    mv \"$FRAMEWORK_EXECUTABLE_PATH-merged\" \"$FRAMEWORK_EXECUTABLE_PATH\"\ndone\n```\n\n\u003cbr /\u003e\n\n## UIKit at a glance\n\nUIKit for iOS manages the lifecycle of its `ViewController` along with various views and data from the Chat SDK for iOS. UIKit Components are as follows:\n\n|Component|Description|\n|---|---|\n|SBUGroupChannelListViewController|A `ViewController` that manages a group channel list.|\n|SBUGroupChannelViewController|A `ViewController` that manages a 1-on-n group chat channel.|\n|SBUOpenChannelViewController|A `ViewController` that manages a open chat channel.|\n|SBUCreateChannelViewController|A `ViewController` that creates a channel.|\n|SBUInviteUserViewController|A `ViewController` that invites a user to a channel.|\n|SBURegisterOperatorViewController|A `ViewController` that registers as operator in a channel.|\n|SBUUserListViewController|A `ViewController` that shows a list of members or participants in a channel.|\n|SBUGroupChannelSettingsViewController|A `ViewController` that configures a group channel.|\n|SBUOpenChannelSettingsViewController|A `ViewController` that configures a open channel.|\n|SBUModerationsViewController|A `ViewController` that moderates a channel.|\n|SBUMessageSearchViewController|A `ViewController` that searches messages in a channel.|\n|SBUTheme|A singleton that manages themes.|\n|SBUColorSet|A singleton that manages color sets.|\n|SBUFontSet|A singleton that manages font sets.|\n|SendbirdUI|A class that contains static functions required when using Sendbird UIKit.|\n|SBUGlobalSet|A class that contains static attributes required when using Sendbird UIKit.|\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsendbird%2Fsendbird-uikit-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsendbird%2Fsendbird-uikit-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsendbird%2Fsendbird-uikit-ios/lists"}