这是 StreamVideo 官方 iOS SDK,一个用于构建支持视频和音频通话应用的平台。此仓库包含一个底层 SDK 和一组可重用的 UI 组件,同时适用于 UIKit 和 SwiftUI。
Stream 使开发者能够快速部署可扩展的 Feeds、即时通讯和视频功能,并提供行业领先的 99.999% 正常运行时间 SLA 保证。
借助 Stream 的视频组件,您可以使用我们的 SDK 构建应用内视频通话、音频房间、音频通话或直播。最好的入门方式是参考我们的教程
Stream 提供 UI 组件和状态处理,使构建应用视频通话功能变得容易。所有通话都在 Stream 的全球边缘服务器网络上运行,确保最佳的延迟和可靠性。
Stream 对大多数副业和兴趣项目免费。要符合资格,您的项目/公司需要拥有少于 5 名团队成员且月收入低于 1 万美元。创客每月可免费获得价值 100 美元的视频额度。
以下是我们支持的一些功能
查看我们的文档,了解有关支持的功能和集成指南的更多详细信息。
此仓库包含以下部分
tintColor
、内边距、浅色/深色模式、动态字体大小等。底层客户端用于建立音频和视频通话。它与 Stream 的后端基础设施集成,并实现了 WebRTC 协议。
以下是底层客户端提供的最重要的组件
StreamVideo
- 主要的 SDK 对象。Call
- 提供有关通话状态信息的对象,以及用于更新状态的方法。这是与底层客户端交互的主要对象。在使用 SDK 之前,需要使用 API 密钥和用户/令牌对其进行初始化。
let streamVideo = StreamVideo(
apiKey: "key1",
user: user.userInfo,
token: user.token,
videoConfig: VideoConfig(),
tokenProvider: { result in
yourNetworkService.loadToken(completion: result)
}
)
Call
类提供有关通话的所有信息,例如参与者、通话是否正在录制等。它还提供在通话期间执行标准操作的方法,例如静音/取消静音用户、发送表情回应、更改摄像头输入、授予权限、录制等。
您可以通过 StreamVideo
的方法 func call(callType: String, callId: String, members: [Member])
创建新的 Call
。
SwiftUI SDK 提供开箱即用的 UI 组件,可直接在您的应用中使用。
向您的托管视图添加通话支持的最简单方法是附加 CallModifier
struct CallView: View {
@StateObject var viewModel: CallViewModel
init() {
_viewModel = StateObject(wrappedValue: CallViewModel())
}
var body: some View {
HomeView(viewModel: viewModel)
.modifier(CallModifier(viewModel: viewModel))
}
}
您可以通过在我们 ViewFactory
中实现相应的方法,来自定义通话流程中呈现的屏幕的外观和风格。
我们的大多数组件都是公开的,因此如果您想构建自定义 UI,可以将它们用作构建块。
SDK 中使用的所有文本、图像、字体和声音都可以通过我们的 Appearance
类进行配置,以帮助您将视图品牌化,使其与您的托管应用保持一致。
UIKit SDK 提供 SwiftUI 视图的 UIKit 包装器。其主要集成点是 CallViewController
,您可以轻松地将其推入导航堆栈,或作为模态屏幕添加。
private func didTapStartButton() {
let next = CallViewController.make(with: callViewModel)
next.modalPresentationStyle = .fullScreen
next.startCall(
callType: "default",
callId: callId,
members: members
)
self.navigationController?.present(next, animated: true)
}
CallViewController
是使用 CallViewModel
创建的 - 与我们的 SwiftUI SDK 中使用的相同。
目前,UIKit SDK 中的所有自定义都需要在 SwiftUI 中完成。
视频路线图和更新日志可在此处查看:here。