原生内核(iOS)快速接入

最近更新时间:2026-03-18 16:41:02

我的收藏
本文档将指导您如何在 iOS 项目中快速接入腾讯云互动课堂 SDK。
说明:
阅读本文前,您可以先了解 移动端原生内核与 Web 内核的区别

开发环境要求

IDE:Xcode 14 及以上版本
系统要求:iOS 11.0 及以上

集成步骤

按照以下步骤,您可以快速在 iOS 项目中集成并跑通互动课堂。完整示例代码可参考 官方 Demo

步骤一:安装依赖

在项目的 Podfile 中添加 SDK 依赖:
# framework 使用静态集成
use_frameworks! :linkage => :static

pod 'tcic_ios', :podspec => 'https://ios.qcloudclass.com/${latest}/tcic_ios.podspec'
说明:
如果没有 Podfile,请在项目根目录执行 pod init 生成。
${latest} 版本号请参考 Demo Podfile(最新版本会同步更新至 Demo)。
请在 Xcode 的 Build Settings 中将 User Script Sandboxing 设置为 No



请务必使用真机进行调试,音视频等硬件相关插件在模拟器上无法正常运行。

步骤二:权限配置

教学场景通常需要使用音视频互动和屏幕共享功能。请在项目的 Info.plist 文件中添加以下权限描述:
<!-- 相册权限 -->
<key>NSPhotoLibraryUsageDescription</key>
<string>Video calls require photo library permission.</string>

<!-- 相机权限 -->
<key>NSCameraUsageDescription</key>
<string>Video calls require camera permission.</string>

<!-- 麦克风权限 -->
<key>NSMicrophoneUsageDescription</key>
<string>Voice calls require microphone permission.</string>

<!-- 网络配置 -->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

<!-- 后台模式 -->
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>processing</string>
</array>

<!-- 屏幕录制扩展 -->
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.tencent.comm.tcic.sharescreen</string>
</array>

步骤三:初始化 SDK

在应用启动或首次进入相关页面时,需要初始化 TCIC SDK。
import SwiftUI
import tcic_ios

@main
struct tcic_ios_simple_demoApp: App {
init() {
// 初始化 SDK
TCICManager.shared.initialize()
}

var body: some Scene {
WindowGroup {
ContentView()
}
}
}

步骤四:设置回调事件

通过设置回调,您可以监听课堂内的各类事件(如进退房、消息等)。全局只需设置一次。
@State private var callback: TCICCallback = TCICCallback() // 初始化回调事件

self.callback.afterExitedClassBlock = {
print("dismiss page")
}
self.callback.onJoinedClassFailedBlock = {
print("joined class failed")
}

// 注册回调
TCICManager.shared.setCallback(callback)

步骤五:配置课堂参数

通过 接入准备 拿到关键参数。在进入课堂前,需构建 TCICConfig 对象并传入必要参数。
let headerConfig = TCICHeaderComponentConfig()
let messageConfig = TCICMessageComponentConfig()

// 示例:配置自定义头部左侧视图
// headerConfig.headerLeftBuilder = headerLeftBuilder

let config = TCICConfig(
token: "YOUR_TOKEN", // 通过云 API 获取的 token
classId: "YOUR_CLASS_ID", // 课堂 ID
userId: "YOUR_USER_ID", // 用户 ID
role: 1, // 用户角色 (0: 学生, 1: 老师, 3: 助教, 4: 巡课)
headerComponentConfig: headerConfig, // Header 组件配置
messageComponentConfig: messageConfig // Message 组件配置
// ... 其他自定义配置
)

TCICManager.shared.setConfig(config)

步骤六:进入课堂页面

在合适的时机(如按钮点击事件中)拉起课堂页面。以下为 SwiftUI 示例:
Button(action: {
let headerLeftBuilder: TCICHeaderComponentConfig.HeaderBuilder = {
return MyHeaderLeftView(messenger: TCICManager.shared.Tengine.binaryMessenger)
}

let headerConfig = TCICHeaderComponentConfig()
let messageConfig = TCICMessageComponentConfig()
headerConfig.headerLeftBuilder = headerLeftBuilder
headerConfig.headerLeftBuilderWidth = 200
headerConfig.headerLeftBuilderHeight = 40
let config = TCICConfig(
token: "YOUR_TOKEN",
classId: "YOUR_CLASS_ID",
userId: "YOUR_USER_ID",
role: 1,
headerComponentConfig: headerConfig,
messageComponentConfig: messageConfig
)
TCICManager.shared.setConfig(config)
isActive = true
}) {
Text("打开互动课堂")
.frame(maxWidth: .infinity)
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(8)
}
.padding(.horizontal)
.fullScreenCover(isPresented: $isActive, onDismiss: {
TCICManager.shared.Tengine.viewController = nil
}) {
TCICManager.TPage()
.edgesIgnoringSafeArea(.all)
}