StreamVideo iOS

StreamVideo StreamVideoSwiftUI StreamVideoUIKit StreamWebRTC

Stream Video for iOS Header image

这是 StreamVideo 官方 iOS SDK,一个用于构建支持视频和音频通话应用的平台。此仓库包含一个底层 SDK 和一组可重用的 UI 组件,同时适用于 UIKit 和 SwiftUI。

什么是 Stream?

Stream 使开发者能够快速部署可扩展的 Feeds、即时通讯和视频功能,并提供行业领先的 99.999% 正常运行时间 SLA 保证。

借助 Stream 的视频组件,您可以使用我们的 SDK 构建应用内视频通话、音频房间、音频通话或直播。最好的入门方式是参考我们的教程

Stream 提供 UI 组件和状态处理,使构建应用视频通话功能变得容易。所有通话都在 Stream 的全球边缘服务器网络上运行,确保最佳的延迟和可靠性。

👩‍💻 创客免费计划 👨‍💻

Stream 对大多数副业和兴趣项目免费。要符合资格,您的项目/公司需要拥有少于 5 名团队成员且月收入低于 1 万美元。创客每月可免费获得价值 100 美元的视频额度。

💡支持的功能💡

以下是我们支持的一些功能

查看我们的文档,了解有关支持的功能和集成指南的更多详细信息。

仓库概述 😎

此仓库包含以下部分

主要原则

底层客户端

底层客户端用于建立音频和视频通话。它与 Stream 的后端基础设施集成,并实现了 WebRTC 协议。

以下是底层客户端提供的最重要的组件

StreamVideo

这是与底层客户端交互的主要对象。在使用 SDK 之前,需要使用 API 密钥和用户/令牌对其进行初始化。

let streamVideo = StreamVideo(
    apiKey: "key1",
    user: user.userInfo,
    token: user.token,
    videoConfig: VideoConfig(),
    tokenProvider: { result in
      yourNetworkService.loadToken(completion: result)
    }
)

Call

Call 类提供有关通话的所有信息,例如参与者、通话是否正在录制等。它还提供在通话期间执行标准操作的方法,例如静音/取消静音用户、发送表情回应、更改摄像头输入、授予权限、录制等。

您可以通过 StreamVideo 的方法 func call(callType: String, callId: String, members: [Member]) 创建新的 Call

SwiftUI SDK

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

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

0.2 里程碑

0.3 里程碑

0.4 里程碑

0.5.0 里程碑

1.0.0 里程碑 - 四月

1.1.0 里程碑 - 六月

1.2.0 里程碑 - 九月

1.3.0 里程碑 - 十二月

1.3 之后