Sendbird Chat SDK v3 for iOS (Objective-C)
弃用说明(v3)
我们建议客户尽早计划迁移到SDK v4,因为存在重大更改。我们还提供优先支持迁移和与v4相关的问题。SDK v4在Websocket、本地缓存、投票、计划消息、置顶消息等方面提供了更丰富和更强大的功能。所以现在就试试吧!(Chat SDK v4)
目录
简介
通过Chat SDK for iOS,您可以轻松高效地将实时聊天集成到客户端应用程序中。在客户端实现中,您可以轻松初始化、配置和构建聊天。在服务器端,Sendbird确保为您的应用程序中的聊天提供可靠的基管理服务。本read.me文件提供了Chat SDK的结构、附加功能和安装步骤。
工作原理
使用Chat SDK在客户端应用程序中实现聊天很简单:用户登录,查看频道列表,选择或创建一个公开频道或群组频道,并通过使用频道事件代理向频道发送消息,同时还可以从频道中的其他用户那里接收消息。
关于Sendbird Chat SDK for iOS的更多信息
了解有关Sendbird Chat for iOS的更多信息,请参阅iOS Chat SDK文档。如果您对错误和功能请求有任何评论或问题,请访问Sendbird社区。
开始之前
本节展示了您在使用Sendbird Chat SDK for iOS之前需要检查的先决条件。
要求
Chat SDK for iOS的最小要求包括
- 已启用开发者模式的Mac OS
- Xcode
- 至少一个运行iOS 11.0或更高版本的物理iOS设备
- Swift 4.0及其以后版本
Sendbird Chat SDK的附加组件
尝试使用这两个扩展构建您的Sendbird应用程序
-
Sendbird UIKit for iOS:一个开发工具包,带有用于将标准聊天功能轻松快速集成到新或现有客户端应用程序的用户界面。
-
Sendbird SyncManager for iOS:一个Chat SDK附加组件,通过事件驱动的结构将本地数据存储的同步与Sendbird服务器上的聊天数据进行交叉链接,从而优化用户缓存体验。
入门
本节为您提供了开始使用 Sendbird Chat SDK for iOS 所需的信息。按照以下简单步骤将 Chat SDK 集成到您的客户端应用中。
尝试示例应用
测试 Chat SDK 最快的方法是在我们的示例应用之上构建您的聊天应用。要创建示例应用的工程,请从我们的 GitHub 仓库下载应用。链接在下面。
步骤 1:从您的仪表板创建 Sendbird 应用
Sendbird 应用包含了聊天服务所需的全部内容,包括用户、消息和频道。要创建应用程序
- 访问 Sendbird 仪表板,输入您的电子邮件和密码,创建新账户。您也可以使用 Google 账户注册。
- 在设置向导的提示下,输入您组织的信息以管理 Sendbird 应用。
- 最后,在设置完成后仪表板主页面出现时,点击右上角的 创建 +。
您的服务中每个应用程序只能集成一个 Sendbird 应用,不论平台如何。Sendbird 应用内的所有用户可以跨所有平台相互通信。这意味着您 iOS、Android 和网页客户端应用的用户都可以互相发送和接收消息,而无需任何额外设置。
注意:所有数据仅限于单个应用的范围,不同 Sendbird 应用中的用户无法互相聊天。
步骤 2:通过 CocoaPods 或 Carthage 安装 SDK
如果您熟悉在项目中使用外部库或 SDK,安装 Chat SDK 是一个简单的过程。您可以使用以下方式使用 CocoaPods
或 Carthage
安装 Chat SDK。
- CocoaPod
打开终端窗口。切换到项目目录,然后运行以下命令打开Podfile
:
$ pod init
在Podfile
中添加以下行:
platform :ios, '11.0'
use_frameworks!
target YOUR_PROJECT_TARGET do
pod 'SendBirdSDK'
end
通过CocoaPods安装SendBird
框架。
$ pod install
现在,您可以打开*YOUR_PROJECT*.xcworkspace
来运行您的项目,其中使用SendBird
框架。如果您不想使用CocoaPods
,请参阅手动安装指南。
- Carthage
- 将
github "sendbird/sendbird-ios-framework"
添加到您的Cartfile
中。 - 运行
carthage update
。 - 转到Xcode项目的“通用”设置标签页。在Finder窗口中打开
<YOUR_XCODE_PROJECT_DIRECTORY>/Carthage/Build/iOS
,然后将SendBirdSDK.framework
拖动到Xcode中的“已嵌入的二进制文件”部分。确保选择“需要时复制”选项,并点击“完成”。 - 在您的应用程序目标的“构建阶段”设置标签页中,点击“+”图标,选择“新建运行脚本阶段”。创建一个“运行脚本”,在其中指定您的shell(如'/bin/sh'),在shell下面的脚本区域添加以下内容:
/usr/local/bin/carthage copy-frameworks
- 在“输入文件”下添加您要使用的框架的路径。例如:
$(SRCROOT)/Carthage/Build/iOS/SendBirdSDK.framework
- 将复制框架的路径添加到“输出文件”。例如:
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SendBirdSDK.framework
有关详细说明,请参阅将框架添加到应用程序。
启用ARC
要使用 SendBird
框架,您应该开启 ARC(自动引用计数)。为此,请进入项目的 构建设置,并将 Objective-C 自动引用计数的值设置为是(在 Swift
中,默认为 是)。如果您不希望在项目范围内全局开启 ARC,请转到 构建阶段 - 编译源文件,并在 SendBird
框架使用的源文件中添加 -fobjc-arc
到 编译器标志。这意味着只有该文件开启了 ARC。
第3步:在 Objective-C 中使用 Chat SDK
您只需用一个导入语句即可使用所有类和方法,无需桥接头文件,同时支持 Objective-C
和 Swift
。
#import <SendBirdSDK/SendBirdSDK.h>
在 Swift 中使用 Objective-C API 可帮助您了解如何使用 Chat SDK 的 Swift 语法。
发送第一条消息
按照以下分步说明进行操作,以进行身份验证并发送第一条消息。
身份验证
为了使用用 Objective-C
编写的 iOS Chat SDK 的功能,您应该通过 Sendbird 服务器的用户身份验证来初始化 SBDMain
实例。此实例基于已验证的用户账户与服务器进行通信和交互,然后用户的应用程序可以开始使用 Chat SDK 的功能。
以下是使用 Chat SDK 发送第一条消息的步骤
步骤 1:初始化 Chat SDK
初始化 Chat SDK 允许 Chat SDK响应用户客户端应用中的连接和状态变化。 将 Sendbird 应用程序的 APP_ID
作为参数传递给 initWithApplicationId:
。 initWithApplicationId:
创建了一个 SBDMain
实例,因此在整个客户端应用中只需调用一次。 建议在用户登录视图中实现初始化代码。 Chat SDK 的初始化应在 AppDelegate
实例的 application:didFinishLaunchingWithOptions:
方法中完成。
[SBDMain initWithApplicationId:APP_ID];
步骤 2:连接到 Sendbird 服务器
A. 使用唯一的用户 ID
通过使用唯一的用户 ID 或用户 ID 和访问令牌将用户连接到 Sendbird 服务器。 要连接到 Sendbird 服务器,用户需要使用唯一 ID 登录。 新用户可以使用任何尚未使用的用户 ID 进行验证,这将自动注册到 Sendbird 系统。 已存在的 ID 可以直接登录。 该 ID 必须在 Sendbird 应用程序中是唯一的,以与其他标识进行区分,例如服务中的散列电子邮件地址或电话号码。
[SBDMain connectWithUserId:USER_ID completionHandler:^(SBDUser * _Nullable user, SBDError * _Nullable error) {
if (error != nil) { // Error.
return;
}
}];
B. 使用唯一的用户 ID 和访问令牌
通过使用聊天平台API,您可以创建用户并为每个用户发放一个唯一访问令牌,或者为已存在的用户发放访问令牌。一旦发放了访问令牌,用户就需要提供访问令牌才能登录Sendbird应用程序。
- 使用聊天平台API,在用户注册或登录您的服务时创建Sendbird用户账户。
- 将用户ID以及发放的访问令牌保存在您安全管理的持久存储中。
- 当用户尝试登录应用程序时,从存储中加载用户ID和访问令牌,然后将它们传递给`connectWithUserId:accessToken:completionHandler:`方法。
- 建议定期更换用户的访问令牌以保障账户安全。
[SBDMain connectWithUserId:USER_ID accessToken:ACCESS_TOKEN completionHandler:^(SBDUser * _Nullable user, SBDError * _Nullable error) {
if (error != nil) { // Error.
return;
}
}];
- 安全登录用户提示
要管理谁可以访问您的Sendbird应用程序,请转到仪表板上的设置 > 应用程序 > 安全 > 访问令牌权限设置。您可以更改设置以防止没有访问令牌的用户登录到您的应用程序或限制他们的读和写消息的访问。出于安全原因,当用户登录Sendbird服务器时,您也可以使用会话令牌而不是访问令牌。请参阅聊天平台API指南中的访问令牌与Session令牌部分以获取更多信息。
步骤3:创建一个新的公开频道
创建一个公开频道。一旦创建,Sendbird应用程序中的所有用户都可以轻松参与该频道。
[SBDOpenChannel createChannelWithCompletionHandler:^(SBDOpenChannel * _Nullable openChannel, SBDError * _Nullable error) {
if (error != nil) { // Error.
return;
}
}];
注意:以下步骤中使用的多数方法都是异步的,except initWithApplicationId:. 这意味着您的客户端应用程序必须在通过完成处理器从Sendbird服务器接收到成功回调之前才能进入下一步。
第四步:进入频道
进入频道以发送和接收消息。
[SBDOpenChannel getChannelWithUrl:CHANNEL_URL completionHandler:^(SBDOpenChannel * _Nullable openChannel, SBDError * _Nullable error) {
if (error != nil) { // Error.
return;
}
[openChannel enterChannelWithCompletionHandler:^(SBDError * _Nullable error) {
if (error != nil) { // Error.
return;
}
}];
}];
第五步:向频道发送消息
最后,向频道发送消息。有三种类型的 消息:纯文本格式的用户消息、二进制文件消息(如图片或PDF),以及通过仪表板或Chat Platform API发送的纯文本管理员消息。
[openChannel sendUserMessage:MESSAGE data:DATA customType:CUSTOM_TYPE completionHandler:^(SBDUserMessage * _Nullable userMessage, SBDError * _Nullable error) {
if (error != nil) { // Error.
return;
}
}];
注意
版本3.1.0发布(本地缓存)
本地缓存功能已在本次3.1.0版本中引入到Chat SDK中。通过在SBDMain.initWithApplicationId()
中的参数useCaching
,可以启用新的本地缓存功能。当关闭本地缓存时,SDK向下兼容v3.0版本。这意味着它将与v3.0完全相同地工作,并且因此与SyncManager兼容。然而,我们强烈建议您使用具有本地缓存的Chat SDK而不是SyncManager,以下是一些原因:具有本地缓存的Sendbird Chat SDK支持新的功能,例如群聊频道集合、消息集合和消息自动重发。最终SyncManager将被弃用,因为嵌入式本地缓存是它的更新和更好的版本。
有关更多信息,请参阅我们的文档。此外,将为当前使用SyncManager的客户提供迁移指南。