pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。Podfile 文件,修改文件为如下内容。注意将 Your App 替换为你的 Target 名称,并将 version 替换为你需集成的 SDK 版本,当前最新版本为 1.68.110。SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a'; try increasing the minimum deployment targetPodfile 文件合适位置(通常是末尾处),加入后重新执行 pod install:pod install。成功安装后,项目文件夹下会生成一个 .xcworkspace 文件。.xcworkspace 文件,配置 Info.plist,需要开启以下权限:Privacy - Bluetooth Always Usage Description "Your comment"
Privacy - Bluetooth Peripheral Usage Description "Your comment"
Privacy - Microphone Usage Description "Your comment"
Privacy - Photo Library Additions Usage Description "Your comment"
Privacy - Camera Usage Description "Your comment"
Privacy - Photo Library Usage Description "Your comment"
Privacy - Local Network Usage Description "Your comment"Info.plist 中添加以下配置,关闭 Flutter Impeller 渲染器:添加键 FLTEnableImpeller,类型为 Boolean,值为 false。| 参数名 | 参数类型 | 是否必须 | 默认值 | 参数说明 |
|---|---|---|---|---|
| waterMark | string | 否 | "" | 水印 |
| waterMarkSize | double | 否 | 0 | 水印文字大小 |
| waterMarkOpacity | double | 否 | 0 | 水印文字透明度(0–1.0) |
onLiveClassReady 回调中设置:UpimeBrowserCategoriesDelegate:result(PlasoBrowserHomeFetchPayload.skipped().encode())PlasoBrowserHomeChannelPayload.h。configInfoParameter() 补充的参数包 括:appId、loginName、userName、meetingId、topic、meetingType、userType、onlineMode、validTime、endTime、appType、mediaType、d_sharpness、enableNewClassExam、d_enableObjectEraser 等。liveVC 并配置课堂参数,最后 present 即可启动实时课堂。| 参数名 | 参数类型 | 是否必须 | 默认值 | 参数说明 |
|---|---|---|---|---|
| query | string | 是 | - | 通过 createLive(withQuery:) 传入签名后的课堂 query |
| userName | string | 否 | - | 昵称 |
| members | Array | 否 | - | 预传入的成员信息,可设置课堂中默认的成员信息 |
| supportLocalFile | boolean | 否 | true | 是否支持插入本地文件 |
| enableSendMessage | boolean | 否 | true | 是否允许发送消息;为 false 时消息界面不显示消息输入框 |
| enableUserVisible | boolean | 否 | false | 课堂用户对当前用户的可见性是否可用;为 true 时 UpimeUser.visible 生效 |
| endRemindTime | long | 否 | 0 | 传入终止时间,不传入表示不提醒(单位:秒) |
| redPacketLimit | int | 否 | 0 | 红包雨个数上限(≤ 0 则使用默认设置) |
| defaultPermission | int | 否 | 0 | 会议模式权限设置(1/2/4 组合,≤ 0 则使用默认) |
| supportSelect | boolean | 否 | true | 是否支持选择模式 |
| openFileMode | int | 否 | 1 | 插入文档时的文档展示模式:0 图片模式,1 窗口模式 |
| toolBoxTypes | int | 否 | 0 | 工具箱配置(参考 PureUpimeToolBoxType) |
| enableInteractPPT | boolean | 否 | false | 是否启用交互 PPT |
| teachToolTypes | int | 否 | 0 | 教具选择(参考 PureUpimeTeachToolType) |
| supportUndo | boolean | 否 | false | 是否支持撤销 |
| useNewSmallboard | boolean | 否 | false | 是否启用新的小黑板 |
| supportHighlighter | boolean | 否 | false | 是否支持荧光笔 |
| shouldForbiddenScreenShot | boolean | 否 | false | 是否防截屏 |
| enableVote | boolean | 否 | false | 课堂是否开启投票功能 |
| enableSaveBoard | boolean | 否 | false | 是否支持保存白板;若开启需对接保存白板回调 |
| chatAlertConfig | int | 否 | 0 | 消息提醒控制:0 本地记录,1 开启,2 关闭;默认 0,仅对学生生效 |
| enableCtlANS | boolean | 否 | true | 课堂是否允许调整 ANS(自动噪声抑制),默认允许 |
| enableStarShow | boolean | 否 | false | 是否展示积分排行榜 |
| recordingPreparationTip | string | 否 | nil | 录制准备提示,默认 nil 不展示 |
| hideRecordingIndicator | boolean | 否 | false | 是否隐藏「录制中」字样 |
| showStudentClassElapsedTime | boolean | 否 | false | 学生端是否显示已开课时间 |
说明:随堂测版本、对象擦模式等属于 query 签名参数,由 configInfoParameter()或generateQuery()写入,详见 Query 参数说明。Demo 中Tool.sign从UserDefaults读取PlasoAppKey完成签名,正式环境请在服务端生成带signature的 query。
UpimeFile 对象UpimeFile 对象进行封装。UpimeFile 是核心数据结构,用于向课堂传递文件信息。type:UpimeFileType 枚举,表示文件类型(如 UpimeFileType_PPT、UpimeFileType_PDF 等)title:文件显示标题url:文件直接访问 URL(适用于普通文件)info:文件特定信息数组(适用于预解析文件或需动态获取 URL 的普通文件)pages:文件总页数(仅适用于 PDF 等多页文件)UpimeProtocol 中的回调方法向应用请求可访问 URL,便于处理带时效的签名 URL。getExtFileName(普通文件)info 插入普通文件时,SDK 回调此方法,需根据 info 返回可访问 URL。func upimeVC(_ upimeVC: UIViewController & UpimeProtocol, getExtFileName info: [Any], result: @escaping (String) -> Void)getExtFileInfo(云课盾文件)getExtFileName 类似,但 info 含云课盾签名参数,返回字典。func upimeVC(_ upimeVC: UIViewController & UpimeProtocol, getExtFileInfo info: [Any], result: @escaping ([String: Any]) -> Void)getPreParseFileName(预解析文件)info)和资源相对路径(suffix)返回带签名 URL。func upimeVC(_ upimeVC: UIViewController & UpimeProtocol, getPreParseFileName info: [Any], suffix: String, result: @escaping (String) -> Void)UpimeFile 并调用 liveVC.insertFile(_:) 即可将文件插入实时课堂。getExtFileName 动态获取 URLUpimeFile 中嵌入最终 URL,而是在 SDK 需要访问时通过代理回调动态获取时,可使用此方式。UpimeProtocol 并设置 DelegateUpimeFilegetExtFileNamegetPreParseFileName Delegate 方法: SDK 访问预解析文件中的具体资源(图片、HTML、JSON 等)时回调此方法,需向后端请求带签名 URL。UpimeProtocolliveVC 的 DelegateUpimeFilegetPreParseFileNamesuffix,并生成对应签名 URL。http://120.55.3.51:3000 仅为演示,请替换为实际后端地址。suffix 参数: SDK 按访问资源传入不同 suffix,如 PPT 的 /index.html、PDF 的 /x.jpg 或 /info.json。info 参数: info 为 NSArray,info[0] 通常为 "parsed",info[1] 为含 id 的字典。PlasoSdkDemoForiOS 目录。Podfile,修改内容如下。将 Your App 替换为 Target 名称,version 替换为需集成的 SDK 版本(当前最新 1.68.110)。PlasoSdkDemoForiOS/AppConfig.swift,填入伯索分配的 appId 和 appKey 后即可体验。