Sendbird iOS 版聊天 SDK

Platform Languages CocoaPods Carthage compatible Commercial License

目录

  1. 简介
  2. 系统要求
  3. 快速入门
  4. 发送您的第一条消息
  5. 招聘

简介

Sendbird iOS 版聊天 SDK 使您能够以最小的努力将实时聊天功能添加到您的客户端应用程序中。Sendbird 提供功能丰富、可扩展且经过验证的聊天解决方案,深受 Reddit、Hinge、PubG 和 Paytm 等公司的信赖。

工作原理

聊天 SDK 提供了提供丰富聊天体验的完整功能,其实现始于添加用户登录、列出可用频道、选择或创建开放频道群组频道,并通过频道事件委托接收消息和其他事件,以及发送消息的能力。一旦基本功能到位,恭喜您,您现在拥有了一个聊天应用程序!

一旦完成这些,请查看 Sendbird 支持的所有其他功能,并添加最适合您用户的功能。

文档

文档中了解更多关于 Sendbird iOS 版聊天的信息。如果您有任何意见、问题或功能请求,请在 Sendbird 社区中告知我们。

系统要求

iOS 版聊天 SDK 的最低要求是

注意:Sendbird 服务器支持传输层安全协议 (TLS) 1.0 到 1.3 版本。例如,在 TLS 1.3 不可用的服务器区域,将依次支持较低版本,从 1.2 到 1.0,以确保数据传输安全。


快速入门

最快的入门方法是使用 示例代码仓库 中的示例应用程序之一,在 Sendbird 控制面板中创建一个应用程序,并将 App ID 复制到示例应用程序中,即可开始使用。


步骤详解

步骤 1:从您的控制面板创建 Sendbird 应用程序

在安装 Sendbird 聊天 SDK 之前,您需要在 Sendbird 控制面板上创建一个 Sendbird 应用程序。在初始化聊天 SDK 时,您将需要您的 Sendbird 应用程序的 App ID

注意:每个 Sendbird 应用程序可以与一个客户端应用程序集成。在同一个应用程序中,用户可以在所有平台上相互通信,无论他们是在移动设备上还是在 Web 上。


步骤 2:安装聊天 SDK

如果您熟悉在项目中使用外部库或 SDK,则安装聊天 SDK 非常简单。Sendbird 聊天 SDK 可以通过Swift PackagesCocoaPodsCarthage 进行安装。

注意:如果您不想使用包管理器,请查看手动安装指南

Swift Packages

您可以使用 Xcode 原生包管理器 Swift Packages 进行安装。

  1. 打开 Xcode,转到您项目的 General 设置选项卡,然后在左侧列的 Project 下选择您的项目。

  2. 转到 Swift packages 选项卡,然后单击 + 按钮。

  1. 当弹出窗口显示时,在搜索栏中输入我们的 github 仓库地址。地址为 https://github.com/sendbird/sendbird-chat-sdk-ios
  1. 设置 Rules,然后单击 Next
  1. Package product 列中选中 SendbirdChatSDK,然后单击 Finish。这将在 Xcode 中建立 Swift Package Dependency 菜单。

CocoaPods

  1. 打开终端窗口,移动到您的项目目录,然后通过运行以下命令创建 Podfile
$ pod init
  1. 将在您的项目文件夹中创建一个 Podfile。打开 Podfile 并像下面这样修改文件。
# 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
  1. 然后通过在同一终端窗口中运行以下命令来安装 SendbirdChatSDK 框架。
$ pod install
  1. 在该文件夹中,您将看到一个新的项目文件,格式为 .xcworkspace。现在,您可以使用文件中的 SendbirdChatSDK 框架构建您的项目。

Carthage

  1. 打开终端窗口,添加以下行以在您的项目文件夹中创建 Cartfile
$ touch Cartfile
  1. 移动到您的项目目录,打开 Cartfile,然后将以下行添加到您的 Cartfile
github "sendbird/sendbird-chat-sdk-ios"
  1. 运行 carthage update 命令以下载 Sendbird iOS 版聊天 SDK。
$ carthage update --use-xcframeworks
  1. 更新完成后,转到您的 Xcode 项目的 General 设置选项卡。然后,在 Finder 窗口中打开 <YOUR_XCODE_PROJECT_DIRECTORY>/Carthage/Build/iOS,并将 SendbirdChatSDK.xcframework 文件夹拖放到 Xcode 中的 Frameworks, Libraries, and Embedded 部分。

静态库

您还可以从 SDK v4.19.7 开始将聊天 SDK 作为静态库导入。

  1. 导航到 Github Releases 页面

  2. 打开 Assets 下拉列表

  3. 下载 SendbirdChatSDKStatic.xcframework.zip 文件

  4. 下载完成后,转到您的 Xcode 项目的 General 设置选项卡。然后,将 SendbirdChatSDKStatic.xcframework 拖放到 Xcode 中的 Frameworks, Libraries, and Embedded 部分。

步骤 3:导入聊天 SDK

只需一个简单的导入语句,您就可以在 Swift 和 Objective-C 中使用所有类和方法。

import SendbirdChatSDK

发送您的第一条消息

现在聊天 SDK 已经导入,我们准备开始发送消息了。

注意:以下步骤中的方法都是异步的,除了 SendbirdChat.initialize(:) 之外。这意味着,当使用异步方法时,客户端应用程序必须通过完成委托接收来自 Sendbird 服务器的成功回调,才能继续下一步。执行此操作的一个好方法是方法的嵌套。

身份验证

为了使用聊天 SDK 的功能,您应该通过用户身份验证与 Sendbird 服务器初始化 SendbirdChatSDK 实例。此实例基于经过身份验证的用户帐户与服务器通信和交互,然后用户的客户端应用程序可以使用聊天 SDK 的功能。

以下是使用聊天 SDK 发送您的第一条消息的步骤


步骤 4:初始化聊天 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。


步骤 5:连接到 Sendbird 服务器

通过使用 init() 方法初始化后,您的客户端应用程序必须始终连接到 Sendbird 服务器,然后才能调用任何方法。如果您尝试在未连接的情况下调用方法,则会返回 ERR_CONNECTION_REQUIRED (800101) 错误。

通过唯一的用户 ID 或结合访问令牌或会话令牌将用户连接到 Sendbird 服务器。Sendbird 更倾向于后一种方法,因为它确保了用户的隐私。前者在开发阶段或您的服务不需要额外安全性时很有用。

A. 使用唯一用户 ID

使用用户唯一的 用户 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.
}

B. 使用唯一用户 ID 和令牌的组合

Sendbird 更倾向于您通过使用令牌传递 APP ID,因为它确保了用户的隐私和安全。创建用户及其访问令牌,或颁发会话令牌,以便在连接期间传递。访问令牌和会话令牌之间的比较可以在此处找到。一旦令牌颁发,用户需要在用于登录的 SendbirdChat.connect() 方法中提供颁发的令牌。

  1. 使用聊天平台 API,使用用户注册您的服务时提交的信息创建 Sendbird 用户帐户。
  2. 将用户 ID 以及颁发的令牌保存到安全管理的持久性存储中。
  3. 当用户尝试登录 Sendbird 应用程序时,从存储中加载用户 ID 和令牌,然后将它们传递给 SendbirdChat.connect() 方法。
  4. 建议定期更换用户的令牌以保护帐户安全。
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.
}

步骤 6:创建一个新的开放频道

使用以下代码创建一个开放频道。开放频道是您 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.
}

注意:您还可以创建一个群组频道来发送消息。要了解更多信息,请参阅群组频道页面中的创建频道

步骤 7:进入频道

进入开放频道以发送和接收消息。

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.
}

步骤 8:向频道发送消息

最后,向您进入的频道发送消息。要了解有关您可以发送的消息类型的更多信息,请参阅消息

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.
}

步骤 9:接收消息

使用 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.
   }
}

聊天 SDK 大小

以下是截至 v4.9.2 版本的聊天 SDK 大小。

我们正在招聘

在 Sendbird,我们是一群多元化、谦逊、友好和勤奋的个人,为了共同的目标而团结在一起,构建下一代移动和社交技术,涵盖聊天、语音和视频,这些技术正在改变我们的工作和生活方式。我们一直在寻找优秀的人才加入我们的团队。查看我们的招聘页面以获取更多信息。