创建无障碍的单 App 模式体验
Create accessible Single App Mode experiences
2022年6月6日
一句话判断
如果你的 App 会用于自助点餐、医疗登记、考试等单设备锁定场景,这场 Session 详细讲解了 Guided Access 和三种 Single App Mode 的适用场景与无障碍适配方案。
这场 Session 讲了什么
Apple 无障碍团队的 Drew Haas 系统介绍了 iOS/iPadOS 上限制设备到单个 App 的所有模式,以及如何确保这些模式下无障碍功能仍然可用。
内容分三部分:Guided Access(用户主动发起的辅助功能锁定,适合认知障碍用户和儿童使用场景);三种程序化 Single App Mode(Single App Mode、Autonomous Single App Mode、Persistent System Banner Mode,适合自助终端、考试、医疗场景);以及 Single App Mode 下的无障碍 API 使用方式。
值得深挖的点
你的 App 可能已经在 Guided Access 下运行了。 即便你没有写任何相关代码,用户可以在系统设置里开启 Guided Access,然后三击侧键将任何 App 锁定。你应该测试你的 App 在 Guided Access 下的表现。
认知无障碍的设计原则。 宽容错误(操作前警告而非操作后不可逆)、减少对时机的依赖(不用定时器自动执行操作)、付款前始终确认(包括一键购买场景)。这些原则不只适用于 Guided Access,应该贯彻在所有 UI 设计中。
三种 Single App Mode 的精确选择。 最基础的 Single App Mode 适合永久固定设备(如餐厅自助点餐屏,需要 Supervised);Autonomous Single App Mode 允许 App 自主控制锁定/解锁时机(如考试 App,不需要 Supervised);Persistent System Banner Mode 最温和,只在顶部显示持续横幅(如医疗信息展示)。
代码片段
// Guided Access 自定义限制
class AppDelegate: UIResponder, UIApplicationDelegate,
UIGuidedAccessRestrictionDelegate {
// 声明限制标识符
func guidedAccessRestrictionIdentifiers() -> [String] {
return ["lockAccountSettings"]
}
// 限制的用户可见标题和描述
func guidedAccessRestriction(withIdentifier restrictionIdentifier: String) ->
(String, String?) {
switch restrictionIdentifier {
case "lockAccountSettings":
return ("锁定账户设置", "防止用户修改账户信息")
default:
return ("", nil)
}
}
// 限制状态变更回调
func guidedAccessRestriction(withIdentifier restrictionIdentifier: String,
didChange newState: UIGuidedAccessRestrictionState) {
if restrictionIdentifier == "lockAccountSettings" {
accountSettingsButton.isUserInteractionEnabled = (newState == .allow)
}
}
}
// 随时检查限制状态
let state = UIAccessibility.guidedAccessRestrictionState(
forIdentifier: "lockAccountSettings"
)
if state == .deny {
// 限制已启用,禁用相关功能
}
最佳实践
- 为 Guided Access 设计自定义限制。 锁定容易让用户迷路的功能入口(如账户设置、支付信息),让核心功能保持可用。
- 认知无障碍原则要贯穿始终。 宽容错误、减少定时依赖、付款前确认——这些对所有用户都有益。
- Single App Mode 下确保无障碍功能可用。 VoiceOver、切换控制等辅助功能不能因为锁定模式而失效。
- 选择合适的 Single App Mode 级别。 不要过度限制——考试场景用 Autonomous,信息展示场景用 Persistent Banner 就够了。
还有什么值得关注
- Guided Access 位于系统设置 > 辅助功能,开发者连接 Xcode 后可启用开发者诊断工具
- Autonomous Single App Mode 不需要设备被监管(Supervised),适合 BYOD 考试场景
- Persistent System Banner Mode 是三种中最轻量的限制,用户仍然可以有限地访问其他 App
- 自助终端场景推荐配合 MDM 方案批量部署