Sendbird iOS 版聊天 SDK 使您能够以最小的努力将实时聊天功能添加到您的客户端应用程序中。Sendbird 提供功能丰富、可扩展且经过验证的聊天解决方案,深受 Reddit、Hinge、PubG 和 Paytm 等公司的信赖。
聊天 SDK 提供了提供丰富聊天体验的完整功能,其实现始于添加用户登录、列出可用频道、选择或创建开放频道或群组频道,并通过频道事件委托接收消息和其他事件,以及发送消息的能力。一旦基本功能到位,恭喜您,您现在拥有了一个聊天应用程序!
一旦完成这些,请查看 Sendbird 支持的所有其他功能,并添加最适合您用户的功能。
在文档中了解更多关于 Sendbird iOS 版聊天的信息。如果您有任何意见、问题或功能请求,请在 Sendbird 社区中告知我们。
iOS 版聊天 SDK 的最低要求是
macOS
Xcode
至少一台运行以下系统的设备
iOS 13.0 及更高版本
macOS 11.0 及更高版本
Swift 5.10 或更高版本
或 Objective-C
注意:Sendbird 服务器支持传输层安全协议 (TLS) 1.0 到 1.3 版本。例如,在 TLS 1.3 不可用的服务器区域,将依次支持较低版本,从 1.2 到 1.0,以确保数据传输安全。
最快的入门方法是使用 示例代码仓库 中的示例应用程序之一,在 Sendbird 控制面板中创建一个应用程序,并将 App ID
复制到示例应用程序中,即可开始使用。
在安装 Sendbird 聊天 SDK 之前,您需要在 Sendbird 控制面板上创建一个 Sendbird 应用程序。在初始化聊天 SDK 时,您将需要您的 Sendbird 应用程序的 App ID
。
注意:每个 Sendbird 应用程序可以与一个客户端应用程序集成。在同一个应用程序中,用户可以在所有平台上相互通信,无论他们是在移动设备上还是在 Web 上。
如果您熟悉在项目中使用外部库或 SDK,则安装聊天 SDK 非常简单。Sendbird 聊天 SDK 可以通过Swift Packages、CocoaPods 或 Carthage 进行安装。
注意:如果您不想使用包管理器,请查看手动安装指南。
您可以使用 Xcode 原生包管理器 Swift Packages 进行安装。
打开 Xcode,转到您项目的 General 设置选项卡,然后在左侧列的 Project 下选择您的项目。
转到 Swift packages 选项卡,然后单击 + 按钮。
https://github.com/sendbird/sendbird-chat-sdk-ios
。SendbirdChatSDK
,然后单击 Finish。这将在 Xcode 中建立 Swift Package Dependency 菜单。$ pod init
# platform :ios, '13.0'
target 'YOUR_PROJECT_NAME' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for `YOUR_PROJECT_NAME`
pod SendbirdChatSDK
end
SendbirdChatSDK
框架。$ pod install
.xcworkspace
。现在,您可以使用文件中的 SendbirdChatSDK
框架构建您的项目。$ touch Cartfile
github "sendbird/sendbird-chat-sdk-ios"
$ carthage update --use-xcframeworks
您还可以从 SDK v4.19.7 开始将聊天 SDK 作为静态库导入。
打开 Assets
下拉列表
下载 SendbirdChatSDKStatic.xcframework.zip
文件
下载完成后,转到您的 Xcode 项目的 General 设置选项卡。然后,将 SendbirdChatSDKStatic.xcframework 拖放到 Xcode 中的 Frameworks, Libraries, and Embedded 部分。
只需一个简单的导入语句,您就可以在 Swift 和 Objective-C 中使用所有类和方法。
import SendbirdChatSDK
现在聊天 SDK 已经导入,我们准备开始发送消息了。
注意:以下步骤中的方法都是异步的,除了 SendbirdChat.initialize(:)
之外。这意味着,当使用异步方法时,客户端应用程序必须通过完成委托接收来自 Sendbird 服务器的成功回调,才能继续下一步。执行此操作的一个好方法是方法的嵌套。
为了使用聊天 SDK 的功能,您应该通过用户身份验证与 Sendbird 服务器初始化 SendbirdChatSDK
实例。此实例基于经过身份验证的用户帐户与服务器通信和交互,然后用户的客户端应用程序可以使用聊天 SDK 的功能。
以下是使用聊天 SDK 发送您的第一条消息的步骤
现在,在应用程序中初始化聊天 SDK,以允许聊天 SDK 响应 iOS 客户端应用程序中连接状态的变化。初始化需要 App ID
,可以在 Sendbird 控制面板中找到。
在调用 initialize(params:migrationStartHandler:completionHandler:)
方法之前,使用您的 Sendbird 应用程序 ID 创建一个 InitParams
对象。在参数中,您还可以确定是否启用本地缓存。
let initParams = InitParams(
applicationId: APP_ID,
isLocalCachingEnabled: true,
logLevel: .info
)
SendbirdChat.initialize(params: initParams) {
// Migration starts.
}, completionHandler: { error in
// Migration is completed.
}
completionHandler
通过不同的事件处理程序获取初始化状态。当本地数据库升级时,将调用 migrationStartHandler
。同时,completionHandler
通知客户端应用程序初始化是否完成。
如果您将 isLocalCachingEnabled
设置为 true 时初始化失败,SDK 将正常运行并将 isLocalCachingEnabled
的值更改为 false。如果您仍然希望使用本地缓存,请使用 clearCachedData(completionHandler:)
清除数据库,然后再次尝试初始化,并将 isLocalCachingEnabled
设置为 true。
注意:
SendbirdChatSDK
实例的initialize(params:migrationStartHandler:completionHandler:)
方法必须在客户端应用程序中至少调用一次。我们建议您通过AppDelegate
实例的application:didFinishLaunchingWithOptions:
方法初始化 Sendbird 聊天 SDK。
通过使用 init()
方法初始化后,您的客户端应用程序必须始终连接到 Sendbird 服务器,然后才能调用任何方法。如果您尝试在未连接的情况下调用方法,则会返回 ERR_CONNECTION_REQUIRED (800101)
错误。
通过唯一的用户 ID 或结合访问令牌或会话令牌将用户连接到 Sendbird 服务器。Sendbird 更倾向于后一种方法,因为它确保了用户的隐私。前者在开发阶段或您的服务不需要额外安全性时很有用。
使用用户唯一的 用户 ID 将用户连接到 Sendbird 服务器。默认情况下,Sendbird 服务器可以通过唯一的用户 ID 验证用户身份。在请求连接时,服务器查询数据库以检查是否匹配。任何未被占用的用户 ID 都会自动注册为 Sendbird 系统的新用户,而现有 ID 则允许间接登录。该 ID 在 Sendbird 应用程序中必须是唯一的,例如您服务中的哈希电子邮件地址或电话号码。
这使您可以快速启动并运行,而无需深入了解令牌注册过程的细节,但是请确保在启动之前启用强制令牌,因为在没有令牌的情况下启动存在安全风险。
SendbirdChat.connect(userId: USER_ID) { user, error in
guard let user = user, error == nil else {
return // Handle error.
}
// The user is connected to the Sendbird server.
}
Sendbird 更倾向于您通过使用令牌传递 APP ID,因为它确保了用户的隐私和安全。创建用户及其访问令牌,或颁发会话令牌,以便在连接期间传递。访问令牌和会话令牌之间的比较可以在此处找到。一旦令牌颁发,用户需要在用于登录的 SendbirdChat.connect()
方法中提供颁发的令牌。
SendbirdChat.connect()
方法。SendbirdChat.connect(userId: USER_ID, authToken: AUTH_TOKEN) { user, error in
guard let user = user, error == nil else {
return // Handle error.
}
// The user is connected to the Sendbird server.
}
使用以下代码创建一个开放频道。开放频道是您 Sendbird 应用程序中的所有用户都可以轻松参与而无需邀请的地方。
let params = OpenChannelCreateParams()
params.name = CHANNEL_NAME
OpenChannel.createChannel(params: params) { openChannel, error in
guard let openChannel = openChannel, error == nil else {
return // Handle error.
}
// An open channel is successfully created.
// Through the openChannel parameter of the callback method,
// you can get the open channel's data from the Sendbird server.
}
注意:您还可以创建一个群组频道来发送消息。要了解更多信息,请参阅群组频道页面中的创建频道。
进入开放频道以发送和接收消息。
openChannel.enter { error in
guard error == nil else {
return
}
// The current user successfully enters the open channel,
// and can chat with other users in the channel by using APIs.
}
最后,向您进入的频道发送消息。要了解有关您可以发送的消息类型的更多信息,请参阅消息。
openChannel.sendUserMessage(MESSAGE) { userMessage, error in
guard let userMessage = userMessage, error == nil else {
return // Handle error.
}
// The message is successfully sent to the channel.
// The current user can receive messages from other users through
// the channel(_:didReceiveMessage:) method of an event delegate.
}
使用 SendbirdChat.addChannelDelegate(_:identifier:)
方法添加 OpenChannelDelegate.channel(_:didReceive:)
事件委托,以便您可以接收刚刚发送到频道的消息。您还可以在我们的控制面板上看到该消息。
class ViewController: UIViewController, OpenChannelDelegate {
override func viewDidLoad() {
super.viewDidLoad()
SendbirdChat.addChannelDelegate(self, identifier: CLASS_IDENTIFIER) // Replace CLASS_IDENTIFIER with a unique identifier for this delegate.
}
func channel(_ channel: BaseChannel, didReceive message: BaseMessage) {
// A message is received in the channel.
}
}
以下是截至 v4.9.2
版本的聊天 SDK 大小。
在 Sendbird,我们是一群多元化、谦逊、友好和勤奋的个人,为了共同的目标而团结在一起,构建下一代移动和社交技术,涵盖聊天、语音和视频,这些技术正在改变我们的工作和生活方式。我们一直在寻找优秀的人才加入我们的团队。查看我们的招聘页面以获取更多信息。