View in English

  • 메뉴 열기 메뉴 닫기
  • Apple Developer
검색
검색 닫기
  • Apple Developer
  • 뉴스
  • 둘러보기
  • 디자인
  • 개발
  • 배포
  • 지원
  • 계정
페이지에서만 검색

빠른 링크

5 빠른 링크

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 주제
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 자막 전문
  • 코드
  • 앱에서 연령에 맞는 경험 제공하기

    새로운 Declared Age Range API로 앱에서 연령에 맞는 경험을 제공하는 방법을 알아보세요. 자녀가 앱으로 부모와 연령대를 공유할 수 있도록 하여 개인정보를 보호하는 방식으로 안전한 경험을 보장하는 방법을 소개합니다. 또한 사용자의 연령에 따라 앱의 콘텐츠 및 기능을 맞춤 설정하는 데 이러한 프레임워크가 어떤 도움이 되는지 알아보고, 연령 확인을 구현하며, 캐싱을 이해하고, 보다 안전하고 매력적인 경험을 만들면서 사용자의 개인 정보를 존중하는 방법을 설명합니다.

    챕터

    • 0:00 - 서론
    • 0:34 - 온라인에서 자녀를 보호하기 위한 노력
    • 2:25 - Declared Age Range 프레임워크
    • 7:00 - 연령대 요청하기
    • 12:22 - 자녀를 보호하기 위한 추가 방법

    리소스

    • Declared Age Range
    • Design safe and age‑appropriate experiences for your apps and games
    • Helping Protect Kids Online
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC25

    • PermissionKit으로 자녀의 안전 강화하기
  • 비디오 검색…

    안녕하세요 “앱에서 연령에 맞는 경험 제공하기” 세션입니다 저는 iCloud Family 엔지니어링 관리자 Austin입니다 이 비디오에서는 세 가지 주제를 다룹니다 먼저 온라인에서 자녀를 보호하도록 돕는 것입니다 그런 다음 Declared Age Range 프레임워크를 살펴봅니다 마지막으로 연령대를 요청하고 연령에 맞는 훌륭한 경험을 빌드하는 방법을 설명합니다 먼저 Declared Age Range 프레임워크를 만들게 된 배경부터 보겠습니다 Apple의 목표는 사람들의 역량을 높이고 삶을 발전시키는 기술을 창조하되 온라인에서 사람들의 안전을 지키고 개인정보를 보호하는 거죠 모든 연령대의 사람이 Apple의 제품과 서비스를 이용할 때 훌륭하고 안전한 경험을 하기를 바랍니다

    2025년 2월 Apple은 “온라인에서 자녀를 보호하기 위한 노력” 백서를 발표했습니다 유아와 10대를 아울러 어린이를 온라인 위협으로부터 보호하려면 지속적인 노력이 필요합니다 디지털 세계는 점점 더 복잡해지고 있으며 가족에게 미치는 위험은 끊임없이 변화하고 있습니다 Apple은 개인정보 보호, 보안 및 안전에 대한 깊은 헌신을 바탕으로 부모가 개인정보 보호를 위한 방식으로 자녀를 보호하도록 제공되는 신뢰할 수 있는 도구를 지속적으로 개선하고 있습니다 2025년 3월 Apple는 간소화된 자녀 설정 흐름을 출시했습니다 덕분에 부모가 자녀 계정 설정을 나중에 완료하고자 할 때 어린이에게 맞는 기본 설정을 이용할 수 있습니다 그리고 iOS 26에서 Apple은 자녀의 계정에 잘못 설정된 연령을 쉽게 수정할 수 있는 기능을 부모에게 제공합니다 또한 iOS 26에서는 App Store의 글로벌 연령 등급이 더 세분화되어 다섯 가지가 되었죠 4세 이상, 9세 이상, 13세 이상 16세 이상, 18세 이상입니다 이러한 등급은 제품 페이지에 더 유용한 정보를 추가하며 부모에게는 자녀의 경험에 대한 추가 인사이트를 제공합니다 마지막은 새로운 Declared Age Range API의 도입입니다 이 비디오의 초점이기도 하고요 다음으로 Declared Age Range 프레임워크의 세부 사항을 봅니다 연령에 맞는 경험에서 앱은 연령대를 요청할 수 있습니다 프롬프트 자체가 앱이 요청한 내용과 사용자의 연령에 따라 맞춤화되죠 사용자는 공유 여부를 선택할 수 있습니다 이 결정에 따라 앱은 경험을 맞춤 조정할 수 있습니다 여기서 앱은 사용자가 16세 이상인지 묻습니다 개인정보 보호를 위해 앱은 경험에 중요한 연령 세트를 제공합니다 API는 두 숫자의 세트인 연령대를 반환하고요 이 방식으로 생년월일은 비공개로 유지됩니다 사용자는 적절한 경험을 이용하는 데 필요한 정보만 공개하면 됩니다 이제 다양한 사용자가 연령대를 선언하는 방법을 살펴보겠습니다 이 예에서 앱은 13세와 16세를 묻습니다

    14세인 Olivia는 자신이 13~15세 범위라고 선언할 수 있습니다

    9세인 Emily는 자신이 12세 이하라고 밝힐 수 있습니다

    42세인 Ann은 자신이 16세 이상이라고 밝힐 수 있습니다 어떤 경우에도 생년월일은 앱에 공개되지 않습니다 Declared Age Range 프레임워크는 어린이 및 청소년 경험용입니다 따라서 이 API는 입력된 연령에 대해 지역 최댓값을 설정합니다 최댓값은 항상 해당 지역의 성인 연령입니다 앱에는 고유한 요구 사항이 있죠 각 앱은 한 요청에서 최대 세 가지 연령을 지정할 수 있습니다 즉 네 가지 범위가 마련됩니다 각 범위의 기간은 2년 이상이어야 합니다

    앱에 적합한 연령대를 결정할 때 중요한 것은 앱이 다양한 연령대의 사용자에게 표시하거나 숨기려는 경험입니다

    어떤 앱은 지역 요구 사항을 기준으로 삼을 수도 있고 최상의 경험을 위해 필수라고 판단할 수도 있습니다 자녀 온보딩 중에 부모는 Declared Age Range를 알아보고 자녀의 연령을 확인하고 자녀에게 맞는 공유 옵션을 선택할 수 있습니다 Family & Settings에서 자녀를 탭하고 Apple Account & Password와 Age Range for Apps로 차례로 이동해 관리할 수도 있습니다

    자녀 기기에서 Apple Account and Settings로 가서 Personal Information을 탭해도 Age Range for Apps가 표시됩니다 이 API에는 세 가지 설정이 있습니다 이 사용자는 Always Share입니다 Always Share는 앱에서 묻는 연령대를 자동으로 반환하죠 새로운 정보가 공개되면 알림이 나타납니다

    이 사용자는 Ask First입니다

    Ask First는 공유 여부 선택 메시지를 표시합니다

    이 사용자는 Never share입니다 Never share는 공유를 항상 거부합니다 앱에서 사용자의 연령을 요청했을 때 아무것도 표시되지 않습니다 생년월일을 비공개로 유지하는 것은 중요합니다

    따라서 Declared Age Range 프레임워크에는 개인정보 보호를 보장하는 추가적인 조치가 있죠 Ask First에서는 기본적으로 원래 응답의 기념일에만 메시지를 표시합니다 마찬가지로 Always Share에서는 기본적으로 원래 응답의 기념일에만 새로운 연령 정보를 공개합니다

    예를 들어 보겠습니다 어린이가 13세가 되어 새로운 연령대로 진입해도 API는 기념일까지 여전히 12를 반환합니다

    그러다가 원래 연령 선언의 기념일이 되면 요청 시 API는 자동 공유하거나 공유하라는 메시지를 표시합니다

    그래서 사용자의 생년월일이 공개되지 않습니다

    마지막으로 사용자는 앱이 현재 연령을 수신하기 위해 다시 메시지를 표시하도록 할 수 있습니다 예를 들어 생일이 지난 후 주말을 맞은 사용자는 연령이 더 높은 어린이를 위한 기능을 바로 이용하고자 합니다 이 경우 기념일까지 기다릴 필요가 없습니다 Settings의 앱의 연령대에서 특정 앱으로 이동하고 Share Age Range를 다시 탭해 캐시를 강제로 지울 수 있습니다

    그러면 앱이 다음에 연령이 요청될 때 업데이트된 연령대 응답을 받죠

    연령에 맞는 경험을 만들려면 사용자에게 적합하도록 앱의 기능을 수정하는 것이 핵심입니다 설명을 위해 앞서 보여 드린 연령에 맞는 경험을 빌드하는 예시를 보겠습니다

    이제 앱은 사용자의 연령에 맞는지 여부를 기준으로 경험을 변경하도록 선택할 수 있습니다 여기서 사진 공유 기능은 Landmarks 앱이 어린이의 연령대를 확인하고 그 연령에 맞는 기능인지 판단할 때까지 사용할 수 없는데요

    시작하려면 Declared Age Range 기능을 프로젝트에 추가해야 합니다 프로젝트 대상의 Signing and Capabilities 탭으로 이동해 더하기 버튼을 클릭합니다

    그런 다음 Declared Age Range를 선택합니다

    이제 샘플 앱 UI로 들어가 코딩을 시작하겠습니다 여기 Landmarks 앱이 있습니다 명소 목록을 보여 주죠 탭하면 상세 설명으로 이동하고요

    이것이 명소의 세부 정보 보기입니다 여기에 새로운 사진 공유 기능을 추가하고 싶습니다

    기능이 활성화되었는지 여부를 추적하는 변수를 추가합니다 알림을 표시할 윈도우를 API가 알도록 하는 환경 변수를 추가합니다 이는 iPad, Mac 등 앱에 윈도우가 여러 개 있는 사용 사례에서 중요한 부분입니다 그런 다음 활성화해야 하는지 여부를 확인하는 버튼을 추가하죠 기본적으로 비활성화되어 있고요

    이제 requestAgeRangeHelper를 알아보겠습니다

    이 메서드에는 API를 대상으로 응답을 요청하고 수신하기 위한 모든 논리가 포함되어 있습니다

    API를 통해 앱이 런타임에 연령을 지정할 수 있습니다 지역 또는 사용 사례별로 해당 컨텍스트에서 앱에 적용되는 연령을 지정합니다 시간 관계상 사용자의 지역을 확인하는 코드를 나중에 구현하라는 주석을 추가합니다

    requestAgeRange 메서드를 사용해 연령대를 요청합니다 그리고 관심 연령대를 입력합니다 여기서는 사용자가 16세 이상인지 알고자 합니다

    응답을 처리하는 코드를 구현할 준비가 되었습니다 응답은 공유 또는 공유 거부에 해당하는 열거형을 반환합니다

    열거형이 공유에 해당하면 사용자가 공유한 것이며 하한과 상한이 반환됩니다 이는 API에서 반환된 연령대를 나타냅니다 열거형이 공유 거부에 해당하면 사용자가 공유하지 않은 것입니다

    이제 하한이 16 이상인지 확인합니다

    이것이 true이면 상한은 nil이라고 가정할 수 있습니다

    앞서 언급했듯이 상한 및 하한 값은 nil이 될 수 있습니다 이것은 12 이하 같은 범위나 16 이상처럼 상한이 없는 범위를 나타내는 데 사용됩니다

    사용자가 16세 이상이면 사진 공유 버튼을 활성화하죠 15세 이하면 버튼은 비활성화됩니다 연령대가 공유되는 경우 ageRangeDeclaration 값도

    반환되는데 어린이라면 값은 항상 guardianDeclared입니다 10대이고 iCloud 가족에 속해 있으면 guardianDeclared입니다 iCloud 가족에 속하지 않은 10대면 selfDeclared입니다

    성인이면 값은 selfDeclared이며 이제 코드로 돌아가겠습니다 API에서 오류가 발생할 수도 있습니다 오류를 처리하는 코드를 추가하겠습니다 invalidRequest 오류는 원인이 개발자인 오류입니다 요청 자체에 문제가 있음을 나타내죠 예를 들어 기간이 2년이 아닌 연령대가 있는 것입니다 notAvailable 오류는 앱에서 처리해야 하는 기기 구성 문제를 나타냅니다 예를 들어 Apple 계정으로 기기에 로그인하지 않은 것입니다 이제 모든 것을 종합해 사용자 경험을 보여 드리죠

    Landmarks 세부 정보 보기를 열면 본인이 16세 이상임을 공유할지 묻는 알림이 표시됩니다 공유하기로 선택합니다 예상대로 이제 사진 공유 기능을 사용할 수 있습니다

    알아 두면 유용한 세부 정보가 몇 가지 더 있습니다 API가 자주 호출되기 때문에 시스템은 사용자가 매번 메시지에 답할 필요가 없도록 응답을 캐싱합니다 사실상 앱이 API 호출 시 사용자에게 너무 많은 메시지가 표시되는 것을 걱정할 필요가 없다는 의미입니다

    캐싱된 응답은 기기들에서 동기화됩니다 예를 들어 iPhone에서 공유된 캐싱된 연령대는 Mac과 동기화되죠

    사용자는 Settings에서 캐시 응답을 관리할 수 있습니다

    또한 연령대의 상한이 성인 연령 미만이면 API는 부모가 자녀를 위해 구성한 추가 유해 콘텐츠 차단 기능 세트를 반환합니다 여기 어린이에 대해 커뮤니케이션 제한이 활성화되었는지 확인하는 코드가 있습니다

    이에 대해 자세히 알아보려면 “PermissionKit으로 자녀의 안전 강화하기”를 확인하세요 이 프레임워크를 활용하는 앱은 타사 경험에서 자녀가 소통할 수 있는 대상을 부모가 제어하도록 할 수 있습니다

    이렇게 새로운 API를 알아보았고 사용자 보호에 사용할 수 있는 다른 기능에 대해 설명하겠습니다

    Sensitive Content Analysis API를 사용하면 앱이 이미지 및 비디오의 과도한 노출을 감지하고 화면에 표시하기 전 사용자에게 알리는 방식으로 앱에서 더 안전한 경험을 실현할 수 있습니다

    iOS 26에서는 Sensitive Content Analysis API가 확장되어 실시간 스트리밍 화상 통화에서 과도한 노출을 감지하고 차단하죠

    Screen Time 프레임워크는 부모 및 보호자가 어린이의 웹 사용을 감독하도록 하는 데 필요한 도구를 앱에 제공하며 Family Controls로는 앱이 기기에 자체 유해 콘텐츠 차단 기능을 제공할 수 있습니다

    이렇게 연령에 맞는 경험에 대해 살펴보았고 다음으로 할 일을 알려 드리죠

    developer.apple.com/kr에서 Apple 어린이 안전 도구를 검토하고 필요한 곳에 연령에 맞는 경험을 추가하고

    Declared Age Range 프레임워크를 사용해 연령에 맞는 경험을 적절히 통제하세요

    앱에 연령에 맞는 경험을 추가해 주셔서 감사합니다

    • 8:03 - Request an age range

      // Request an age range
      
      import SwiftUI
      import DeclaredAgeRange
      
      struct LandmarkDetail: View {
          // ...
          @State var photoSharingEnabled = false
          @Environment(\.requestAgeRange) var requestAgeRange
          
          var body: some View {
              ScrollView {
                  // ...
                  Button("Share Photos") {}
                      .disabled(!photoSharingEnabled)
              }
              .task {
                  await requestAgeRangeHelper()
              }
          }
      
          func requestAgeRangeHelper() async {
              do {
                  // TODO: Check user region
                  let ageRangeResponse = try await requestAgeRange(ageGates: 16)
                  switch ageRangeResponse {
                  case let .sharing(range):
                       // Age range shared
                      if let lowerBound = range.lowerBound, lowerBound >= 16 {
                          photoSharingEnabled = true
                      }
                      // guardianDeclared, selfDeclared
                      print(range.ageRangeDeclaration)
                  case .declinedSharing:
                      // Declined to share
                      print("Declined to share")
                  }
              } catch AgeRangeService.Error.invalidRequest {
                  print("Handle invalid request error")
              } catch AgeRangeService.Error.notAvailable {
                  print("Handle not available error")
              } catch {
                  print("Unhandled error: \(error)")
              }
          }
      }
    • 11:49 - Communication Limits

      // Request an age range
      
      func requestAgeRangeHelper() async {
          do {
              // TODO: Check user region
              let ageRangeResponse = try await requestAgeRange(ageGates: 16)
              switch ageRangeResponse {
              case let .sharing(range):
                  if range.activeParentalControls.contains(.communicationLimits) {
                      print("Communication Limits enabled")
                  }
                  // ...
              case .declinedSharing:
                  // Declined to share
                  print("Declined to share")
              }
          } catch {
              // ...
          }
      }
    • 0:00 - 서론
    • Declared Age Range 프레임워크에 대해 자세히 알아보고 앱에서 연령대에 맞는 앱 경험을 만들기 위해 연령대를 요청하는 방법을 알아보세요.

    • 0:34 - 온라인에서 자녀를 보호하기 위한 노력
    • Apple는 2025년 2월, 온라인에서 어린이를 보호하려는 의지를 담은 백서를 발표했습니다. 뒤이어 Apple는 간소화된 자녀 설정 흐름을 출시했습니다. iOS 26부터 부모는 자녀 계정의 나이를 수정할 수 있고 App Store의 글로벌 연령 등급은 더 구체적이게 됩니다(4세 이상, 9세 이상, 13세 이상, 16세 이상, 18세 이상).

    • 2:25 - Declared Age Range 프레임워크
    • Declared Age Range 프레임워크는 특히 어린이와 청소년의 개인 정보를 보호하기 위해 고안되었습니다. 앱에서 나이를 요청할 때 프레임워크는 정확한 생년월일을 묻는 대신 사람들에게 선택할 수 있는 연령대를 제시합니다. 각 앱은 요청 시 최대 3개의 연령을 지정할 수 있어 결과적으로 각 연령대는 최소 2년 이상의 기간인 4개의 연령대가 됩니다. 부모는 ‘Always Share,’ ‘Ask First’, ‘Never Share’ 등 세 가지 공유 설정 중에서 선택할 수 있습니다. 프레임워크에는 개인 정보 공개를 최소화하기 위해 지역별 최대 연령 설정과 기본 알림 빈도도 포함되어 있습니다. 부모는 온보딩하는 동안이나 설정 앱에서 자녀의 연령대 설정을 관리할 수 있습니다.

    • 7:00 - 연령대 요청하기
    • 이제 사용자 연령에 따라 기능을 수정하여 연령에 적합한 경험을 만들 수 있습니다. 이를 달성하려면 앱에서 ‘Declared Age Range’ 기능을 활성화해야 합니다. 그런 다음 DeclaredAgeRange API에서 사용자의 연령 범위를 요청하는 코드를 추가합니다. API는 사용자가 자신의 나이를 공유했는지 여부를 나타내는 열거형으로 응답하고 공유한 경우 연령 범위의 하한과 상한도 함께 응답합니다. 그러면 앱이 사진 공유 버튼과 같은 특정 기능을 올바르게 활성화하거나 비활성화합니다. 시스템은 사용자의 빈번한 프롬프트를 피하기 위해 응답을 캐시하고 캐시된 응답은 여러 기기에서 동기화됩니다. 사람들은 설정 앱에서 캐시된 응답을 관리할 수 있습니다. 뿐만 아니라, 사용자가 미성년자라면 API는 추가 보호자 관리 설정 세트를 반환합니다.

    • 12:22 - 자녀를 보호하기 위한 추가 방법
    • Apple은 개발자가 이미지, 비디오, 라이브 스트리밍에서 특히 어린이 사용자를 누드로부터 보호할 수 있도록 지원하는 API와 프레임워크를 제공합니다. developer.apple.com/kr에서 Apple의 어린이 안전 툴을 검토할 수 있습니다.

Developer Footer

  • 비디오
  • WWDC25
  • 앱에서 연령에 맞는 경험 제공하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드(영문)
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    Apple Developer 앱 받기
    Copyright © 2025 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침