我们推出了新版本的 Sendbird UIKit。版本 3 采用了全新的模块化架构,具有更精细的组件,让您可以更灵活地自定义您的 Web 和移动应用程序。请查看我们的迁移指南,并下载我们的示例
随着 v3 版本的正式发布,master
分支的名称已更改为 main
分支,而 main
分支已更改为 v3 的内容。如果您必须继续使用 v2,请使用 main-v2
分支。
main
main-v2
适用于 iOS 的 Sendbird UIKit 是一个用户界面开发工具包,可以轻松快速地将标准聊天功能集成到新的或现有的客户端应用程序中。从整体主题到颜色和字体等个别样式,组件都可以完全自定义,从而创建专属于您品牌标识的应用程序内聊天体验。
注意:目前,适用于 iOS 的 UIKit 现在同时支持群组频道和开放频道。
此仓库包含 UIKit 源代码和 UIKit 示例,以及 UIKit 框架。
Swift
编写的各种关键功能的自定义示例代码。在 适用于 iOS 的 UIKit 文档中了解更多关于适用于 iOS 的 Sendbird UIKit 的信息。如果您对错误和功能请求有任何意见或问题,请访问 Sendbird 社区。
本节介绍您使用适用于 iOS 的 Sendbird UIKit 需要检查的先决条件。
适用于 iOS 的 Sendbird UIKit 的最低要求是
本节为您提供开始使用适用于 iOS 的 Sendbird UIKit 所需的信息。
我们的示例应用程序具有适用于 iOS 的 Sendbird UIKit 的所有核心功能。从我们的 GitHub 仓库下载该应用程序,以了解在构建您自己的项目之前,您可以使用实际的 UIKit 构建什么。
您可以从创建一个项目开始。Sendbird UIKit 支持 Swift
,因此您可以使用您想要开发的语言创建和处理项目。
可以通过 CocoaPods
、Carthage
或 Swift Package Manager
安装适用于 iOS 的 UIKit
注意:适用于 iOS 的 Sendbird UIKit 依赖于 Sendbird Chat SDK。
转到 Swift Package Manager 的 File 选项卡,然后选择 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 或更早版本构建项目,则可能会发生错误。要修复这些错误,请参阅 处理由未知属性引起的错误。
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。
为了使用 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 时所需的静态属性的类。 |