我们推出了新版本的 Sendbird UIKit。版本 3 采用了新的模块化架构,具有更精细的组件,为您提供更强的灵活性,以自定义您的 Web 和移动应用程序。请查看我们的迁移指南并下载我们的示例
随着 v3 版本的正式发布,master
分支的名称已更改为 main
分支,并且 main
分支已更改为 v3 的内容。如果您必须继续使用 v2,请使用 main-v2
分支。
main
main-v2
用于 iOS 的 Sendbird UIKit 是一个用户界面开发工具包,可以轻松快速地将标准聊天功能集成到新的或现有的客户端应用程序中。从整体主题到颜色和字体等各个样式,组件都可以完全自定义,从而创建专属于您品牌形象的应用程序内聊天体验。
注意:目前,用于 iOS 的 UIKit 现在同时支持群组频道和开放频道。
此仓库包含 UIKit 源代码和 UIKit 示例,以及 UIKit 框架。
Swift
编写的各种关键功能的自定义示例代码。在 UIKit for iOS 文档中了解更多关于 Sendbird UIKit for iOS 的信息。如果您对错误和功能请求有任何意见或问题,请访问 Sendbird 社区。
本节介绍您需要检查的使用 Sendbird UIKit for iOS 的先决条件。
Sendbird UIKit for iOS 的最低要求是
本节为您提供开始使用 Sendbird UIKit for iOS 所需的信息。
我们的示例应用程序具有 Sendbird UIKit for iOS 的所有核心功能。从我们的 GitHub 仓库下载该应用程序,以便在构建您自己的项目之前,了解您可以使用实际的 UIKit 构建什么。
您可以从创建项目开始。Sendbird UIKit 支持 Swift
,因此您可以使用您想要开发的语言创建和处理项目。
UIKit for iOS 可以通过 CocoaPods
、Carthage
或 Swift Package Manager
安装
注意:Sendbird UIKit for iOS 依赖于 Sendbird Chat SDK。
转到 Swift Package Manager 的 File(文件) 选项卡,然后选择 Swift Packages(Swift Packages)。然后选择 Add package dependency...(添加包依赖项...)。
将 SendbirdUIKit
添加到您的 Package Repository
中,如下所示
https://github.com/sendbird/sendbird-uikit-ios-spm.git
SendBirdUIKit
添加到 Xcode 中的 Podfile
中,如下所示platform :ios, '12.0'
use_frameworks!
target YOUR_PROJECT_TARGET do
pod 'SendBirdUIKit'
end
CocoaPods
安装 SendbirdUIKit
框架。$ pod install
CocoaPods
更新 SendbirdUIKit
框架。$ pod update
注意:Cocoapod 使用 SendBirdUIKit 名称,而不是 SendbirdUIKit。
SendbirdUIKit
和 SendBirdSDK
添加到您的 Cartfile
中,如下所示github "sendbird/sendbird-uikit-ios"
github "sendbird/sendbird-chat-sdk-ios"
Carthage
安装 SendbirdUIKit
框架。$ carthage update --use-xcframeworks
注意:使用
Carthage
构建或创建SendbirdUIKit
框架只能使用最新的Swift
。如果您的Swift
不是最新版本,则应手动将框架复制到您的项目中。
Frameworks and Libraries(框架和库)
部分。然后从 <YOUR_XCODE_PROJECT_DIRECTORY>/Carthage/Build
文件夹中拖放 SendbirdUIKit.framework
。注意:如果您使用 Xcode 11.3 或更早版本构建项目,则可能会发生错误。要修复这些错误,请参阅 Handle errors caused by unknown attributes(处理由未知属性引起的错误)。
Sendbird UIKit 提供了附加或保存文件(如照片、视频和文档)的功能。要使用这些功能,您需要向最终用户请求权限。
应用程序必须获得最终用户的许可才能使用他们的照片资产或将资产保存到他们的库中。一旦获得许可,用户就可以发送图像或视频消息并保存媒体资产。
...
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) would like access to your photo library</string>
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) would like to use your camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME) would like to use your microphone (for videos)</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>$(PRODUCT_NAME) would like to save photos to your photo library</string>
...
如果您想附加来自 iCloud
的文件,您必须激活 iCloud
功能。激活后,用户还可以发送带有来自 iCloud
的文件的消息。
转到您的 Xcode 项目的 Signing & Capabilities(签名与功能) 选项卡。然后,单击 + Capability(+ 功能) 按钮并选择 iCloud。选中 iCloud Documents(iCloud 文档)。
为了使用 Chat SDK 的功能,您必须使用 APP_ID
初始化 SendbirdUIKit
实例。此步骤还会初始化 iOS 的 Chat SDK。
通过 AppDelegate
初始化 SendbirdUIKit
实例,如下所示
// AppDelegate.swift
import SendbirdUIKit
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let APP_ID = "2D7B4CDB-932F-4082-9B09-A1153792DC8D" // The ID of the Sendbird application which UIKit sample app uses.
SendbirdUI.initialize(applicationId: APP_ID) {
// Do something to display the start of the SendbirdUIKit initialization.
} migrationHandler: {
// Do something to display the progress of the DB migration.
} completionHandler: { error in
// Do something to display the completion of the SendbirdChat initialization.
}
}
注意:在上面,您应该指定您的 Sendbird 应用程序的 ID 来代替
APP_ID
。
用户信息必须在启动 Sendbird UIKit 之前在 SBUGlobal
中设置为 currentUser
。此信息将在工具包内用于各种任务。必须指定 userId
字段,而其他字段(如 nickname
和 profileURL
)是可选的,如果未指定,则会填充默认值。
通过 AppDelegate
为 UIKit 设置 currentUser
,如下所示
注意:即使您不使用
AppDelegate
,也应在启动聊天服务之前注册用户信息。
// AppDelegate.swift
import SendbirdUIKit
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Case 1: USER_ID only
SBUGlobals.currentUser = SBUUser(userId: {USER_ID})
// Case 2: Specify all fields
SBUGlobals.currentUser = SBUUser(userId: {USER_ID}, nickname:{(opt)NICKNAME} profileURL:{(opt)PROFILE_URL})
}
注意:如果未提前设置
currentUser
,则您对 UIKit 的使用将受到限制。
UIKit 允许您专门为 1 对 1 聊天创建频道,并列出 1 对 1 聊天频道,以便您可以轻松查看和管理它们。使用 SBUChannelListViewController
类,您可以为最终用户提供完整的聊天服务,其中包含列出频道功能。
在您想要启动 UIKit 的任何位置实施以下代码。
import SendbirdUIKit
let groupChannelListVC = SBUGroupChannelListViewController()
let naviVC = UINavigationController(rootViewController: groupChannelListVC)
self.present(naviVC, animated: true)
注意:如果您已经在使用导航控制器,则可以使用
pushViewController
函数。
注意:此时,您可以通过运行您的客户端应用程序来确认服务是否正常工作。
使用 SBUGroupChannelViewController
类,您可以构建基于频道的聊天服务,而不是基于频道列表的聊天服务。
注意:您应该拥有
Channel
对象或ChannelURL
才能运行基于频道的聊天服务。
使用以下代码来实施聊天服务。
import SendbirdUIKit
let channelVC = SBUGroupChannelViewController(channelURL: {CHANNEL_URL})
let naviVC = UINavigationController(rootViewController: channelVC)
present(naviVC, animated: true)
UIKit 以胖二进制文件的形式分发,其中包含有关 Simulator(模拟器) 和 Device(设备) 架构的信息。如果您计划在 App Store 中分发您的应用程序,并希望删除应用程序构建阶段中不必要的架构,请添加以下脚本。
转到您的 Xcode 项目目标的 Build Phases(构建阶段) 选项卡。然后,单击 + 并选择 New Run Script Phase(新建运行脚本阶段)。附加此脚本。
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
UIKit for iOS 管理其 ViewController
的生命周期,以及来自 iOS 的 Chat SDK 的各种视图和数据。UIKit 组件如下:
组件 | 描述 |
---|---|
SBUGroupChannelListViewController | 一个管理群组频道列表的 ViewController 。 |
SBUGroupChannelViewController | 一个管理 1 对 n 群组聊天频道的 ViewController 。 |
SBUOpenChannelViewController | 一个管理开放聊天频道的 ViewController 。 |
SBUCreateChannelViewController | 一个创建频道的 ViewController 。 |
SBUInviteUserViewController | 一个邀请用户加入频道的 ViewController 。 |
SBURegisterOperatorViewController | 一个在频道中注册为管理员的 ViewController 。 |
SBUUserListViewController | 一个显示频道中成员或参与者列表的 ViewController 。 |
SBUGroupChannelSettingsViewController | 一个配置群组频道的 ViewController 。 |
SBUOpenChannelSettingsViewController | 一个配置开放频道的 ViewController 。 |
SBUModerationsViewController | 一个管理频道的 ViewController 。 |
SBUMessageSearchViewController | 一个在频道中搜索消息的 ViewController 。 |
SBUTheme | 一个管理主题的单例。 |
SBUColorSet | 一个管理颜色集的单例。 |
SBUFontSet | 一个管理字体集的单例。 |
SendbirdUI | 一个包含使用 Sendbird UIKit 时所需的静态函数的类。 |
SBUGlobalSet | 一个包含使用 Sendbird UIKit 时所需的静态属性的类。 |