
-
보조 접근을 위해 앱 사용자 정의하기
보조 접근은 인지 장애가 있는 사용자가 iPhone 및 iPad를 독립적으로 사용할 수 있도록 지원하는데 초점을 맞춘 독창적인 iOS 경험입니다. iOS 및 iPadOS 26에서는 보조 접근에서 실행중인 앱을 사용자 정의하여 사용자가 더욱 손쉽고 독립적으로 앱을 사용할 수 있도록 도울 수 있습니다. AssistiveAccess SwiftUI 장면 유형을 사용하여 앱을 맞춤 설정하는 방법을 알아보고 모두를 위한 고품질 보조 접근 경험을 조성하는 데 도움이 되는 핵심 디자인 원칙에 대해 알아보세요.
챕터
- 0:00 - 인사말
- 0:59 - Assistive Access 알아보기
- 4:09 - 장면 생성하기
- 7:08 - 앱 맞춤 설정하기
리소스
관련 비디오
WWDC25
WWDC23
-
비디오 검색…
안녕하세요, 저는 Apple의 Accessibility 팀에서 근무하고 있는 Anne입니다 이 세션에서는 인지 장애가 있는 사용자를 위해 설계된 Apple의 간소화된 iOS 및 iPadOS 경험인 보조 접근을 자세히 설명해 드리겠습니다 보조 접근은 앱과 컨트롤을 본질로 간소화하여 사용자가 기기와 상호 작용하는 방식을 바꿉니다 이 명확한 경험은 모든 사용자가 기기를 편리하고 독립적으로 탐색할 수 있도록 지원합니다 iOS 및 iPadOS 26에서 제공하는 보조 접근 장면 유형을 활용하면 여러분의 앱을 이 경험과 원활하게 통합할 수 있습니다
이 세션에서는 보조 접근을 활용하여 우수한 앱 경험을 빌드하는 방법을 다루겠습니다 그다음 SwiftUI로 보조 접근 장면을 만드는 방법과 앱을 맞춤화할 때 고려할 원칙을 공유하겠습니다
먼저 보조 접근을 간략하게 설명해 드리겠습니다
Apple은 iOS 및 iPadOS 17에서 보조 접근을 도입했습니다
이 간소화된 시스템 경험은 인지 장애가 있는 사용자를 위해 특별히 설계되었습니다 앱과 인터페이스에 간소화된 상호 작용과 성공으로 이어지는 명확한 경로, 일관된 디자인 원칙을 원칙을 제공하여 인지적 부하를 줄이는 것을 목표로 하죠 보조 접근을 처음 접하셨다면 Assistive Access 알아보기 세션을 참고해 주세요 보조 접근은 간소화된 여러 내장 앱을 지원합니다 지금 표시된 카메라, 메시지와 같은 앱이 있죠
이 앱의 디자인에는 공통점이 있습니다 컨트롤이 크고 인터페이스가 간결하고 텍스트에 대한 시각적 대안을 제공하죠 보조 접근에서 명확하고 집중된 디자인 언어를 확립함으로써 이러한 앱은 새롭고 다양한 UI와 상호 작용할 때 필요한 인지적 부하를 줄입니다 디자인이 일관되므로 기대치도 일관됩니다
보조 접근에 최적화되지 않은 앱은 기본적으로 축소된 프레임에서 표시됩니다 기기 하단에 항상 표시되는 뒤로 버튼을 위한 공간을 확보하기 위해서이죠 뒤로 버튼을 사용하면 앱에서 홈 화면으로 이동합니다 인지 장애가 있는 사용자를 위해 이미 앱을 설계했다면 앱을 그대로 보조 접근에 가져오는 것이 좋습니다 이 상황의 적절한 예시로는 AAC 앱이라고도 하는 보완대체 의사소통 앱을 지원하는 경우가 있습니다 ACC 앱과 같은 인지 장애가 있는 사용자를 위한 앱을 설계했으며 레이아웃과 경험을 그대로 보조 접근으로 가져오려면 앱에서 전체 화면을 활용하면 됩니다 앱을 전체 화면으로 표시하려면 앱의 Info.plist 파일에서 UISupportsFullScreenInAssistiveAccess 키를 true로 설정하세요 앱의 디자인은 보조 접근이 비활성화된 상태와 동일하지만 화면 전체를 채워 표시되며 축소된 프레임으로 표시되지 않습니다 런타임 변형을 적용하려면 SwiftUI 및 UIKit 지원을 사용하여 보조 접근 세션이 활성화되었는지 감지하세요
보조 접근에서 전체 화면을 지원하는 앱은 손쉬운 사용 설정의 최적화된 앱 목록에 표시됩니다
앱이 인지 장애가 있는 사용자를 위해 설계되지 않았다면 iOS 및 iPadOS 26의 지원을 활용하여 보조 접근 장면을 만드세요 이 장면 유형을 사용하면 카메라, 메시지와 같은 내장 앱의 익숙하고 눈에 띄는 스타일로 컨트롤이 자동으로 표시되는 맞춤형 경험을 제공할 수 있습니다 이는 화면 크기만 달라지고 다른 사항은 변하지 않는 전체 화면 지원과 다릅니다
어떤 방법을 선택해야 할지 불확실하다면 장면을 선택하여 iOS 및 iPadOS 26가 보조 접근을 위해 제공하는 모든 기능을 활용해 보세요 이 장면 유형이 보조 접근에서 앱을 어떻게 개선하는지 보여드리겠습니다 보조 접근 앱의 공통점은 명확한 디자인을 채택한다는 것입니다 이 명확성은 보조 접근이 활성화되었을 때 기본 컨트롤이 표시되는 독특한 방식에서 시작됩니다
장면 유형을 사용하면 앱이 기존 경험과 잘 어울리면서도 더 크고 명확한 컨트롤 스타일로 표시됩니다 이 친숙한 디자인은 인지 장애가 있는 사용자가 앱을 최대한 활용할 수 있도록 합니다 보조 접근을 위해 앱을 설정하려면 먼저 앱 번들에서 UISupportsAssistiveAccess Info.plist 키를 true로 설정하세요 이렇게 하면 앱이 보조 접근 설정의 최적화된 앱 목록에 표시됩니다 또한 앱이 기본적인 축소된 프레임 대신 전체 화면으로 실행됩니다
다음으로 보조 접근 장면을 채택하고 간소화된 앱 경험을 생성합니다 이 과정을 시연해 보겠습니다
제가 개발 중인 앱을 업데이트하려 합니다 이 그리기 앱에서는 캔버스에 스케치하고 그림을 폴더와 즐겨찾기로 분류하고 다양한 편집 도구를 사용하여 재미있고 매력적인 그림을 만들 수 있습니다
제 앱은 SwiftUI 라이프사이클을 사용합니다 1개의 장면이 있는데 이는 주요 콘텐츠 뷰를 선언하는 윈도우 그룹입니다
앱의 Info.plist에서 UISupportsAssistiveAccess를 true로 설정한 후 앱에 AssistiveAccess 장면을 추가하겠습니다 AssistiveAccess 장면 내에서 보조 접근을 위해 디자인한 맞춤형 계층 구조를 가진 새 콘텐츠 뷰를 만들게요 이 새로운 콘텐츠 뷰는 간소화되고 가벼운 앱 경험을 호스팅합니다 앱이 보조 접근에서 실행되면 이 장면이 생성되고 첨부됩니다
장면이 활성화되면 앱의 기본 SwiftUI 컨트롤이 독특한 보조 접근 디자인으로 표시됩니다 추가 작업 없이도 버튼, 목록, 탐색 제목이 더 눈에 띄는 스타일로 표시되죠
또한 보조 접근 설정에서 구성된 그리드 또는 행 화면 레이아웃이 컨트롤에 자동으로 적용됩니다
장면이 활성화되었을 때 앱의 레이아웃을 테스트하려면 SwiftUI 미리보기 매크로에 assistiveAccess 특성을 전달하세요
UIKit 앱의 경우 UIKit 라이프사이클 앱에서 SwiftUI 장면을 정의하고 활성화하도록 지원하는 iOS 및 iPadOS 26을 통해 유사한 결과를 얻을 수 있습니다 장면 델리게이트 클래스의 static rootScene 속성에서 UIKit의 AssistiveAccess SwiftUI 장면을 선언하세요 장면을 활성화하려면 앱 델리게이트에서 보조 접근 장면을 호스팅하도록 구성된 장면 델리게이트 클래스를 반환하세요
장면 브리징에 관한 자세한 내용은 올해의 SwiftUI의 새로운 기능 세션에서 참고하세요 보조 접근은 간결하고 사용하기 쉬운 상호 작용을 중심으로 설계되었습니다 앱에서 보조 접근을 설정했다면 보조 접근에 중점을 두어 앱 콘텐츠를 구성하세요 보조 접근에 집중하여 앱 콘텐츠를 구성하기 위한 몇 가지 지침을 알려 드릴게요 보조 접근 경험을 고려하여 앱을 핵심 내용으로 간소화하세요 방해가 되는 변경 사항이 없고 다양한 방법으로 정보를 전달하며 사용자를 배려하고 지원하는 경로를 빌드해 보세요
먼저 앱의 핵심 기능을 식별하세요 앱에서 지원해야 할 핵심 기능이 무엇인지 따져보고 해당 기능을 보조 접근에서 구현하세요 기능을 줄이라는 지침이 반직관적일 수 있지만 옵션이 적을수록 방해 요소가 줄고 전체적인 인지적 부하가 감소합니다 확실하지 않다면 핵심에 집중하고 간소화한 보조 접근 경험을 구현하세요 제 앱의 경우 두 가지 기능을 보조 접근으로 가져올 것입니다 캔버스에 스케치하는 기능과 그림을 보는 기능을요 두 기능의 UI 요소만 제 앱의 루트 뷰에 표시될 것입니다 즐겨찾기 표시나 스케치 수정과 같은 앱의 다른 기능은 집중된 경험을 위해 보조 접근으로 가져오지 않을 것입니다 새로 디자인한 제 앱의 루트 뷰입니다 아까 언급한 두 기능을 구현했습니다 그리기와 갤러리입니다
두 기능은 탐색 링크의 목록으로 표시됩니다 보조 접근 장면이 활성화되어 있으므로 링크가 선호하는 그리드나 행 레이아웃에 자동으로 맞춰 표시됩니다
추가 작업 없이도 제가 뷰로 이동하면 보조 접근의 뒤로 버튼이 앱의 탐색 스택 위로 이동합니다
이것만으로도 앱이 상당히 간소화되었습니다 화면에 표시되는 UI 요소는 앱의 필수 기능뿐이며 UI는 익숙한 보조 접근 스타일로 표시됩니다 또한 그리기와 갤러리로 연결되는 두 개의 명백한 경로가 표시됩니다 옵션이 적을수록 선택이 간결해지며 간결한 선택은 사용자가 앱을 탐색할 때 성공할 확률을 높입니다 앱 경험을 간소화하는 최적의 방법을 결정한 후에도 앱을 어느 정도 맞춤화하고 싶을 수 있습니다 보조 접근에서 기능을 맞춤화하는 방법을 설명해 드릴게요 보조 접근을 구현할 때는 인지적 부하를 줄여야 한다는 점을 잊지 마세요
풍부한 기능과 맞춤화는 앱의 완성도를 높이지만 화면에 표시되는 콘텐츠가 너무 많으면 인지 장애가 있는 사용자에게 어려움을 줄 수 있습니다 동시에 표시되는 옵션의 수를 줄여 결정에 집중할 수 있도록 하세요 이 원칙은 화면에 표시되는 요소의 수뿐만 아니라 뷰의 목적에도 적용됩니다 옵션을 줄이면 앱 탐색 시 방해가 되는 요소가 줄어듭니다 옵션이 너무 많으면 부담스러울 수 있으며 인지적 부하가 늘어납니다 다음으로, 표시되는 컨트롤이 명확하게 보이는지 확인하세요 숨겨진 제스처나 중첩된 UI를 피하세요 인지 장애가 있는 사용자에게는 이러한 상호 작용을 찾는 것이 어려울 수 있습니다 대신 명확하게 보이는 뚜렷한 컨트롤을 구현하세요
사용자는 앱을 다양한 속도로 탐색합니다 모든 사용자가 자신의 속도에 맞춰 작업을 완료할 수 있도록 시간 제한이 있는 상호 작용을 피하세요 시간 초과 후 UI나 뷰가 사라지거나 상태가 자동으로 변경되는 경험은 조정해야 합니다 앱에서 작업을 마칠 시간은 충분히 제공해 주세요
보조 접근에서는 사용자가 선택 과정을 안내받는 경험을 설계해야 합니다 여러 옵션을 한 번에 제시하는 대신에 단계별 흐름을 구축하세요 사용자에게 합리적인 수의 단계를 안내하고 경험에 방해가 되는 긴 설정 과정은 피하세요
점진적이고 의도적인 맞춤화를 추가할 때는 특정 결정이 내려지는 위치를 다시 조정해야 할 수도 있죠 이때 각 결정이 독립적으로 처리되도록 하여 인지적 부담을 줄이고 쾌적한 앱 경험을 제공하세요 중요한 작업 중에는 되돌리기 어려운 경우가 있습니다 예로 사진 삭제가 있죠 이러한 기능은 완전히 제거하거나 삭제처럼 영구적인 작업을 구현해야 하는 경우 적절한 시점에 확인을 다시 요청하세요 의도하지 않은 상황에 사용자가 처하지 않도록 경험을 구현해야 합니다
보조 접근에서 우수한 상호 작용을 만들기 위한 모범 사례를 다뤘죠 표시되는 옵션을 줄이고 눈에 잘 띄는 UI를 지원하고 시간 제한이 있는 상호 작용을 피해야 합니다 또한 점진적인 안내형 흐름을 빌드하고 되돌리기 어려운 작업의 구현 여부와 위치는 신중하게 고려해야 하죠 이러한 디자인 가이드라인을 제 앱에 적용해 볼게요
보조 접근 경험에 색상을 사용하여 그리는 기능을 추가해 볼게요 보조 접근 외 경험에서는 색상 선택기로 붓 색상을 선택하죠
다른 보조 접근 앱에서 투명도와 같은 색상 선택기 옵션이 유용한 경우도 있겠지만 제 앱에서는 색상만 필요합니다 이 경험을 위해 기능을 맞춤화하겠습니다
옵션을 줄이는 원칙에 따라 보조 접근에서 실행되는 앱을 위한 색상 선택 뷰를 설계했습니다 색상 선택기 대신에 하나의 붓 색상을 결정하는 뷰로 간소화했습니다 또한 표시되는 색상 수도 몇 가지로 줄였습니다 색상으로 그리려면 해당 색상을 탭하면 됩니다
저는 이 뷰를 그리기 옵션과 캔버스에 진입하는 옵션 사이에 추가했습니다 이 단계별 접근 방식은 앱을 사용하는 모든 사용자가 색상이 선택된 상태로 캔버스에 도달하도록 합니다 참고로 이 순서는 색상 선택기가 구현된 경우와 다릅니다 그때는 색상 선택이 캔버스 내 옵션으로 제공되거든요 대신 저는 색상 선택을 캔버스로 이동하는 과정에서 항상 표시되는 단일 뷰로 분리했습니다 또한 제 앱에서 혼란스럽거나 되돌리기 어려운 기능은 삭제했습니다 제 앱의 캔버스 뷰는 붓질을 되돌리는 옵션을 제공하지 않죠
갤러리에서는 그림을 삭제하는 옵션이 없습니다 이러한 결정은 사용자가 의도하지 않은 작업을 실행할 위험을 제거하여 안전하고 유용한 앱 환경을 제공하기 위해 이루어졌습니다 보조 접근의 핵심은 직관적이고 이해하기 쉬운 디자인입니다 인지 장애가 있는 일부 사용자는 텍스트만 있을 때보다 이미지와 아이콘이 있을 때 더 쉽게 이해합니다 따라서 정보는 다양한 방식으로 제공되어야 합니다 앱이 보조 접근에서 실행될 때는 텍스트만 활용하지 말고 시각적 대안을 제공하여 정보를 전달하세요 버튼이나 탐색 링크와 같은 컨트롤을 구현할 때 아이콘과 레이블을 모두 포함하세요
보조 접근에서는 탐색 막대가 아이콘을 지원하므로 탐색 제목에도 시각적 디자인이 적용됩니다
보조 접근 탐색 아이콘 한정자를 활용하여 이 디자인을 앱에서 구현하세요 보조 접근 장면이 활성화될 때 탐색 제목과 함께 표시할 이미지나 시스템 이미지 이름을 전달하세요 모든 탐색 제목에 아이콘을 포함하세요
인지 장애가 있는 사용자를 위해 앱을 설계하는 방법을 알아봤으니 SwiftUI 장면을 채택하여 앱을 보조 접근으로 가져오세요 이 세션에서 다룬 디자인 원칙을 여러분의 앱에 적용해 보세요 보조 접근에서 지원할 경험을 간소화하고 압축하는 방향으로 조정해야 함을 기억하세요 그리고 가장 효과적인 피드백은 실제 사용자에게서 온다는 점을 잊지 마세요 보조 접근 커뮤니티에서 앱을 테스트할 기회를 찾아보세요 이제 세션을 마치겠습니다 모든 사용자가 활용할 수 있는 앱을 빌드해 주셔서 감사합니다
-
-
5:21 - Create a scene for Assistive Access
// Create a scene for Assistive Access import SwiftUI import SwiftData @main struct WWDCDrawApp: App { var body: some Scene { WindowGroup { ContentView() .modelContainer(for: [DrawingModel.self]) } AssistiveAccess { AssistiveAccessContentView() .modelContainer(for: [DrawingModel.self]) } } }
-
6:25 - Display an Assistive Access preview
// Display an Assistive Access preview import SwiftUI struct AssistiveAccessContentView: View { @Environment(\.modelContext) var context var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text("Hello, world!") } .padding() } } #Preview(traits: .assistiveAccess) AssistiveAccessContentView() }
-
6:35 - Declare a SwiftUI scene with UIKit
// Declare a SwiftUI scene with UIKit import UIKit import SwiftUI class AssistiveAccessSceneDelegate: UIHostingSceneDelegate { static var rootScene: some Scene { AssistiveAccess { AssistiveAccessContentView() } } /* ... */ }
-
6:55 - Activate a SwiftUI scene with UIKit
// Activate a SwiftUI scene with UIKit import UIKit @main class AppDelegate: UIApplicationDelegate { func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { let role = connectingSceneSession.role let sceneConfiguration = UISceneConfiguration(name: nil, sessionRole: role) if role == .windowAssistiveAccessApplication { sceneConfiguration.delegateClass = AssistiveAccessSceneDelegate.self } return sceneConfiguration } }
-
14:36 - Display an icon alongside a navigation title
// Display an icon alongside a navigation title import SwiftUI struct ColorSelectionView: View { var body: some View { Group { List { ForEach(ColorMode.allCases) { color in NavigationLink(destination: DrawingView(color: color)) { ColorThumbnail(color: color) } } } .navigationTitle("Draw") .assistiveAccessNavigationIcon(systemImage: "hand.draw.fill") } } }
-
-
- 0:00 - 인사말
iOS 및 iPadOS 17에서는 인지 장애가 있는 사람들을 위해 시스템 경험을 간소화하는 손쉬운 사용 기능인 보조 접근을 도입합니다. SwiftUI의 보조 접근 장면 유형을 사용하여 앱을 통합할 수 있어 이러한 대상 고객에게 훌륭한 경험을 제공하기 위한 디자인 원칙을 따릅니다.
- 0:59 - Assistive Access 알아보기
Apple은 iOS 및 iPadOS 17에 인지 장애가 있는 사용자의 시스템 경험을 단순화하도록 설계된 기능인 보조 접근을 도입했습니다. 이 기능은 카메라와 메시지 등 몇 가지 정제된 내장 앱에서 간소화된 상호작용, 명확한 경로, 일관된 디자인 관행을 제공하는데, 이는 대형 제어 기능 및 텍스트에 대한 시각적 대안을 제공합니다. 보조 접근에 최적화되지 않은 앱은 뒤로 버튼이 계속 표시된 축소된 프레임으로 표시됩니다. 인지 장애에 맞춰 설계된 앱을 개발한 경우, 보조 접근에서 전체 화면 모드를 활성화할 수 있습니다. 최적화되지 않은 앱의 경우, iOS 및 iPadOS 17에서 지원이 제공되어 익숙한 스타일로 자동으로 표시되는 제어 기능으로 맞춤형 환경을 만들 수 있습니다.
- 4:09 - 장면 생성하기
보조 접근에서 앱은 명확성을 염두에 두고 디자인되어 기본 제어 기능에서 더 크고 명확한 제어 스타일을 사용합니다. 이 기능을 활성화하려면 앱 번들의 특정 키를 true로 설정합니다. 그러면 앱이 최적화된 것으로 나열되고 전체 화면으로 실행됩니다. 그런 다음 앱 내에 별도의 보조 접근 장면을 만들면 간소화되고 가벼운 인터페이스 버전이 제공됩니다. 이 장면에서는 기본 제어 기능이 더욱 눈에 띄게 격자 또는 행 기반 스타일로 자동으로 표시됩니다. SwiftUI 앱의 경우, 보조 접근 장면에서 사용자 지정 뷰 계층 구조를 추가하여 이를 달성할 수 있습니다. UIKit 앱은 iOS 및 iPadOS 26의 새로운 브리징 지원을 사용하여 SwiftUI 장면을 정의하고 활성화함으로써 이 기능을 지원할 수도 있습니다.
- 7:08 - 앱 맞춤 설정하기
앱을 보조 접근에 최적화하려면 앱을 핵심 기능으로 추출하여 하나 또는 두 개의 필수 기능에 집중합니다. 이처럼 간소화된 접근 방식을 사용하면 산만함과 인지적 부하를 줄여줍니다. 앱의 인터페이스는 명확하고 눈에 띄는 제어 기능으로 디자인하고 숨겨진 제스처나 시간제한이 있는 상호작용은 피하세요. 텍스트와 함께 아이콘과 라벨을 사용하는 등 다양한 방법으로 정보를 표시합니다. 선호하는 레이아웃 스타일을 자동으로 반영하는 뒤로 버튼을 통해 직관적인 탐색과 단계별 탐색이 가능합니다. 되돌릴 수 없는 작업을 제거하거나 해당 작업에 대해 여러 번 확인합니다. 이러한 지침을 따르면 보조 접근을 사용하는 사람들에게 안전하고 도움이 되는 환경을 조성할 수 있습니다.