iOS / iPadOS 集成
Swift Package Manager
在 Xcode 的 Package Dependencies 中添加 eduskit-ios,选择精确版本 0.1.1。统一发布包要求 iOS 15+。
- 使用官方课堂页面:只链接
EduSDKUI。 - 使用自定义界面:只链接
EduSDK。
SPM 解析 Swift 源码、Rust XCFramework、OpenIM、TRTC 及 DrawsKit。不要在宿主重复链接另一份供应商二进制。当前 DrawsKit SPM 依赖为 0.1.3,与 Android/npm 的版本号不同。
宿主 Info.plist
在宿主 App 配置以下用途说明,文字按产品实际用途修改。SPM 或 Framework 内的 plist 不会替宿主声明权限。
<key>NSCameraUsageDescription</key>
<string>用于课堂视频交流</string>
<key>NSMicrophoneUsageDescription</key>
<string>用于课堂语音交流</string>
Swift:展示课堂
在主线程的 UIViewController 中调用;变量来自经过业务鉴权的进课配置:
import EduSDKUI
let options = EduClassroomOptions(
appId: appId,
backendUrl: backendUrl,
classroomId: classroomId,
userId: eduUserId,
displayName: displayName,
userToken: accessToken
)
EduClassroomPresenter.present(from: self, options: options)
Objective-C:展示课堂
#import <EduSDKUI/EduSDKUI-Swift.h>
EduClassroomOptions *options = [[EduClassroomOptions alloc]
initWithAppId:appId
backendUrl:backendUrl
classroomId:classroomId
userId:eduUserId
displayName:displayName
userToken:accessToken
inviteDemoUserId:@"student-demo"
themeMode:EduThemeModeSystem
localeTag:nil];
[EduClassroomPresenter presentFrom:self options:options];
inviteDemoUserId 为演示选项,实际成员以后台名单为准。可在展示前调用 EduClassroomPresenter.preload() 预热;它不替代真实进课。
Headless
import EduSDK
let sdk = EduSdk.create(options: EduSdkCreateOptions(
appId: appId,
backendUrl: backendUrl,
userToken: accessToken
))
sdk.onClassInfoChanged { info in /* render info */ }
sdk.onImMessageReceived { message in /* render message */ }
try sdk.initialize()
try sdk.enterClassroom(params: EnterClassroomParams(
classroomId: classroomId,
userId: eduUserId,
displayName: displayName
))
保留 sdk 为页面或会话属性。方法抛出的错误由调用方捕获,运行中的异步结果由事件回调驱动。页面退出时调用 try sdk.leaveClassroom(),最终释放时调用 sdk.destroy();即使退出失败,也要执行资源清理。UI Kit 已管理内部实例。
回调通常在主线程触发;onWhiteboardLiveStrokeReceived 属于 SDK 事件线程。白板高频事件处理后再合并回主线程更新视图。
源码示例与构建
examples/ios-swift 和 examples/ios-oc 提供宿主工程。在 edu-sdks 根目录运行 make build-ios-xcframework 后打开相应 Xcode 工程;make dev-ios 包含依赖解析与示例构建。
真机使用 arm64,模拟器对应 arm64/x86_64;所有二进制需匹配目标架构。连接本地 HTTPS 网关时,模拟器需要信任签发该证书的 CA。真机权限拒绝、后台切换和离开清理按集成验收验证。