-
macOS 评估体验的新动向
探索 macOS 上的 Automatic Assessment Configuration 框架,为教育类 App 构建安全的测评体验。了解如何利用新的 API 创建一个安全、可配置的测评环境,并将 Mac 上的更多系统级功能整合进来。探索如何借助内置的系统预检查和辅助功能控件,更轻松地打造可靠的考试体验。
章节
- 0:00 - Introduction
- 1:34 - Precondition checks
- 3:00 - Accessibility restrictions
- 4:33 - System experience customization
- 9:16 - Application launch restrictions
- 10:51 - Best practices
- 12:35 - Next steps
资源
相关视频
WWDC26
-
搜索此视频…
大家好 我是Chris Education Technologies团队的工程师 很高兴为你介绍 macOS 27中 Automatic Assessment Configuration框架的增强功能 此框架有助于 创建安全的受限环境 供测评机构 在Apple设备上提供 教育评估或认证 要使用此框架 你的App需要受限的 Automatic Assessment Configuration授权 如果你尚未申请 可通过Apple Developer门户提交申请
在本次讲座中 我将介绍五个方面 首先是系统前提条件 即App在允许评估继续 之前可以要求进行的检查
其次是辅助功能限制 用于确保这些功能 仅供经批准使用的学生
之后是系统体验定制 用于定制学生在评估期间 与Mac交互的方式
接下来是应用启动限制 你的App可以设置这些限制 以确保只有你认为 可信的进程 才能在评估期间运行
最后是最佳实践 帮助你充分利用 评估模式所提供的功能
我将使用这个 示例评估App 来演示本视频中介绍的 API功能
首先 我将介绍 前提条件检查 这些检查可在 评估开始之前进行 执行系统前提条件检查 在允许学生开始考试之前 对于确保Mac处于 强化状态至关重要 并有助于从一开始就 保障评估的安全要求
你的App可以要求 启用System Integrity Protection Mac已完成MDM注册 仅有一个账户登录 且该账户是特定类型 例如标准账户 这四项检查共同确保 设备处于强化的 防篡改状态
此外 你的App还可要求 禁用Lockdown Mode 和iCloud Private Relay 这两项检查有助于确保 Apple隐私和安全功能 不会干扰你的 评估基础架构要求 现在我将在示例App中 添加前提条件检查 通过在AEAssessmentConfiguration 对象上设置属性 这个对象定义了 评估会话的参数 此代码片段要求 登录账户为标准账户 配置好前提条件检查后 如果学生的设备 不满足其中一项或多项要求 系统将显示提示 告知学生存在的问题 以及必须在继续前 解决的事项 接下来是管理 辅助功能的可用性 macOS内置了 一套全面的辅助功能 这些功能对于提供 公平的考试访问至关重要 使有视觉 听觉 运动 或认知需求的人 无需第三方辅助软件 即可充分参与
默认情况下 菜单栏和程序坞已隐藏 但任何当前已启用的 辅助功能 在评估会话期间 仍可继续使用
如此处所示 切换控制在评估会话 开始后继续运行
但需要注意的是 某些辅助功能 可以通过用户生成的 内容进行自定义 因此 对这些功能 禁止访问 对于未将其列为经批准 辅助方案的学生 是一项重要的安全措施 在此配置中 所有辅助功能 均已开放 仅限制一项 我正在限制 切换控制的使用 请注意 将配置属性 的值设置为true 并不会启用 相应的辅助功能 它只是允许在评估期间 使用该功能 前提是用户已启用
当评估会话开始时 切换控制将自动退出 且在评估会话期间 无法重新启动 此框架最强大的 功能之一 是系统体验定制 用于定制学生在评估期间 与macOS的交互方式
macOS系统体验旨在 提供无缝 直观的环境 通过菜单栏等 熟悉的元素 Wi-Fi和音量等 菜单栏项目 程序坞 各种输入技术 例如听写和自动填充 以及通过Finder和 打开与存储对话框进行文件交互 你的App可以显示菜单栏 让学生访问 评估期间的 重要应用功能 此外 你的App还可定制 哪些菜单栏项目可用 例如音量或Wi-Fi 同时移除可能成为 信息或内容泄漏渠道的项目 我已演示了 没有菜单栏时 评估会话的外观 在此示例中 我正在设置额外属性 在AEAssessmentConfiguration对象上 以启用菜单栏并定义 一组允许的菜单额外项
请注意 这些菜单额外项 不会被强制启用 而是在评估会话期间 继续保持可用 前提是它们已显示 在菜单栏中
我还定制了Apple菜单 通过在配置对象上 设置一个属性 仅显示睡眠菜单项 也可以设置空数组 以隐藏除 "关于本机"之外的所有项目
随着评估会话开始 应用的菜单项会显示出来 菜单栏项目列表 已过滤 为我刚指定的允许列表 此外 点击Apple菜单 可见其内容已被过滤
接下来我将介绍 一些你可能需要禁用的输入方式 这些方式可能会无意间 为学生提供提示或正确答案 听写功能会自动 输出正确拼写 表情符号选择器提供 可搜索的符号库 而结构化输入会显示 字符组合线索 这些都可能绕过旨在 测试独立记忆的评估
自动填充可将预加载的 答案 笔记或参考材料 从通讯录等来源 填入回答字段 要限制这些输入方式 我将AEAssessmentConfiguration对象中 每个属性的值设置为false 这会在菜单中隐藏它们 并阻止在支持的UI控件中使用 这些功能
设置输入限制后 自动填充 听写功能 以及表情符号与符号菜单项 将不再出现在编辑菜单中 程序坞是另一种有价值的 系统体验 你可能希望 在评估会话期间启用 因为它为学生提供 清晰 专注的工作空间 让他们能够轻松找到 并切换应用 在此代码片段中 我通过将allowsDock设置为true 启用过滤后的程序坞体验 评估期间程序坞仅显示 已允许的App 为学生提供专注的工作空间 以便找到并切换应用
进入评估会话后 请注意 除Finder和废纸篓 这两个常驻锚定元素外 仅有该会话允许的App存在 但即便Finder存在 除非将其明确添加为参与者 否则无法访问 如果你的评估App需要 与指定文件交互 你可能希望 允许访问Finder 并使用标准的 打开与存储对话框 它们提供了一致直观的方式 来浏览 整理 并访问macOS中的文件 接下来我将Finder 添加为评估会话的参与者 通过AEAssessmentConfiguration对象上的 allowedDirectoriesAndFiles属性 我可以将文稿目录 加入允许列表 学生可以在此保存 草稿内容 在示例评估App中 此设置同样会过滤目录 以及标准打开和存储面板 中可用的文件
当学生选择 保存草稿内容时 将显示标准的存储面板 但仅有允许列表中的目录 可供他们保存内容
打开Finder窗口 将显示相同的过滤访问 而允许列表中的目录包含 学生刚刚保存的草稿文件 还有最后一层控制 需要介绍 限制评估期间 允许运行的进程 对于评估App运行而言 非必需的进程 可能对评估会话的完整性 构成威胁 这些进程可被用于 捕获屏幕内容 记录键盘输入 将数据传输给外部方 或以其他方式与系统交互 从而破坏 安全的测试环境 因此 你可能希望 将允许的进程限制为 仅你的评估App和你 加入允许列表的参与App 此外 快捷指令和Automator操作 也可以被关闭 并阻止其执行 将allowOnlyParticipantsToRun 设置为true 指示系统在评估开始时 关闭非必要进程 当评估开始时 启用后仅主评估App 及其明确加入 允许列表的参与者 以及必要的系统进程 才允许运行 我还将allowsUserScriptExecution 设置为false 以阻止快捷指令和Automator 脚本执行
在评估开始前 Safari和 备忘录都在运行 以及一个长时间运行的 快捷指令 然而 在评估开始后 仅示例评估App 及其加入允许列表的 参与者Finder仍在运行 任何用户发起的 后台进程 包括该快捷指令 均已停止 且无法在 安全考试期间访问 无论是首次采用 Assessment Mode 还是加强现有集成 以下最佳实践是每位 开发者都应考虑的
这些实践将有助于 如何采用该框架 如何优化考生体验 以及如何确保你的App 在各macOS版本中稳定运行
凭借其深度系统集成 让Assessment框架为你 保护系统环境 抵制自行实现 等效功能的冲动 直接采用框架的API 并删除你一直维护的 冗余代码
仅限制评估实际所需的 最低要求 你添加的限制 会影响考生体验 因此从宽松开始 有意识地收紧
在评估情境中 辅助功能 应被视为基本要求 每位学生都应享有 公平的测试体验 因此从一开始就设计App 以支持辅助技术 而非将其作为后期 排除的例外情况
如果你是AAC新手 请注意会话转换 不会在你调用开始和 结束会话API时立即发生 注册框架的转换回调 并以这些事件驱动 你App的状态 这样你就始终知道 会话何时真正开始 结束 或意外终止
务必在每个macOS Beta 发布当天重新验证你的App 针对该版本运行完整的 评估测试矩阵 并立即提交反馈报告 等到正式版发布后 才发现回归问题 意味着你的用户也会发现
现在你已了解 可能实现的功能 考虑以下后续步骤将 你的评估App提升到新水平 使用系统预检 来验证设备完整性 然后再开始评估 启用辅助功能 为所有用户提供 公平的评估体验
通过定制对菜单栏项目的访问 提供熟悉 直观的体验 程序坞和文件系统
通过阻止非必要进程 保护评估的 运行时环境
最后 在macOS上使用 真实考试流程测试你的评估方案
无论你是在开发 课堂测验App 还是全国性的 标准化考试平台 macOS上的 AutomaticAssessmentConfiguration框架 都能为你提供验证 系统安全前提的工具 定制辅助功能方案 定制用户体验 以及锁定运行时环境 所有这些都通过一个统一的API 可根据你的需求定制 期待看到你如何利用 这些新功能来提供更安全 更具包容性 更精良的 评估体验 惠及全球各地的学生 感谢你的观看
-
-
2:30 - Set up precondition checks
import AutomaticAssessmentConfiguration func makeAssessmentConfiguration() -> AEAssessmentConfiguration { let configuration = AEAssessmentConfiguration() configuration.allowLockdownMode = false configuration.allowPrivateRelay = false configuration.requiresSIP = true configuration.requiresManagedDevice = true configuration.requiresSingleUser = true configuration.requiresUserAccountType = .standard return configuration } -
4:01 - Restrict accessibility features
import AutomaticAssessmentConfiguration func makeAssessmentConfiguration() -> AEAssessmentConfiguration { let configuration = AEAssessmentConfiguration() configuration.allowsAccessibilityVoiceOver = true configuration.allowsAccessibilitySwitchControl = false configuration.allowsAccessibilityAlternativeInputMethods = true configuration.allowsAccessibilityBackgroundSounds = true configuration.allowsAccessibilityHoverText = true configuration.allowsAccessibilityLiveSpeech = true configuration.allowsAccessibilitySpokenContent = true configuration.allowsAccessibilityVoiceControl = true configuration.allowsAccessibilityZoom = true return configuration } -
5:32 - Customize the Menu Bar items
import AutomaticAssessmentConfiguration func makeAssessmentConfiguration() -> AEAssessmentConfiguration { let configuration = AEAssessmentConfiguration() configuration.allowsMenuBar = true configuration.allowedMenuBarItems = [ .battery, .clock, .volume ] configuration.allowedAppleMenuItems = [ .sleep ] return configuration } -
7:01 - Define input restrictions
import AutomaticAssessmentConfiguration func makeAssessmentConfiguration() -> AEAssessmentConfiguration { let configuration = AEAssessmentConfiguration() configuration.allowsDictation = false configuration.allowsAutoFill = false configuration.allowsStructuralInput = false configuration.allowsEmojiKeyboard = false return configuration } -
7:38 - Enable dock appearance
import AutomaticAssessmentConfiguration func makeAssessmentConfiguration() -> AEAssessmentConfiguration { let configuration = AEAssessmentConfiguration() configuration.allowsDock = true return configuration } -
8:35 - Set allowed directories and files
import AutomaticAssessmentConfiguration func makeAssessmentConfiguration() -> AEAssessmentConfiguration { let configuration = AEAssessmentConfiguration() configuration.allowedDirectoriesAndFiles = [ URL(fileURLWithPath: "~/Documents/") ] return configuration } -
9:58 - Set application launch restrictions
import AutomaticAssessmentConfiguration func makeAssessmentConfiguration() -> AEAssessmentConfiguration { let configuration = AEAssessmentConfiguration() configuration.allowOnlyParticipantsToRun = true configuration.allowsUserScriptExecution = false return configuration }
-
-
- 0:00 - Introduction
An overview of the Automatic Assessment Configuration framework in macOS 27, which creates a locked-down testing environment, and a preview of the five areas covered.
- 1:34 - Precondition checks
Require a hardened device before an exam starts — System Integrity Protection, MDM enrollment, a single signed-in standard account, and disabled Lockdown Mode and iCloud Private Relay.
- 3:00 - Accessibility restrictions
Control which built-in accessibility features stay available during a session, allowing approved accommodations like Switch Control while restricting features that accept user-generated content.
- 4:33 - System experience customization
Tailor how students interact with macOS during an assessment by customizing the Menu Bar and its items, the Dock, input technologies like Dictation and AutoFill, and Finder access.
- 9:16 - Application launch restrictions
Restrict which processes run during an assessment to your app and allowlisted participants, and block Shortcuts and Automator script execution to protect the testing environment.
- 10:51 - Best practices
Recommendations for adopting the framework: rely on its APIs rather than building equivalents, restrict only the minimum required, treat accessibility as a requirement, and register for session transition callbacks.
- 12:35 - Next steps
Ways to take your assessment app further — validate device integrity with pre-checks, enable accessibility for an equitable experience, customize the system experience, block non-essential processes, and test with real exam workflows.