주문형 제공을 위한 UX 권장사항

주문형 모듈로 잘 작동하는 기능은 설치 시 대다수의 사용자에게 필요하지 않은 기능입니다. 다음은 주문형 모듈에 적합한 앱 기능의 몇 가지 예입니다.

  • 대다수의 사용자가 동영상 감상만 하는 앱의 동영상 편집 및 업로드 기능
  • 대부분의 사용자가 다른 사람의 레시피를 둘러보고 팔로우만 하는 앱의 레시피 추가 기능
  • 대부분의 사용자가 도움을 요청하지 않거나 앱 내에서 도움을 요청하지 않는 경우의 도움말 및 지원 기능
  • 세부적인 버그 캡처 및 신고 제공과 같이 덜 사용되는 기능을 위한 대규모 라이브러리
  • 특정 지급 또는 결제 기능
  • 해상도가 매우 높은 미디어 환경 또는 VR/AR 기능

이러한 모듈이 비교적 작고(10MB 미만) 네트워크 또는 기타 오류가 없는 일반적인 경우에 사용자는 주문형 모듈을 매우 빠르게 다운로드하여 사용할 수 있습니다. 즉, 환경은 일반적으로 앱 설치 시 모듈이 있는 경우와 다르지 않습니다.

이 페이지에서는 다음 작업에 도움이 되는 권장사항에 관해 설명합니다.

  • 사용자가 즉시 로드되지 않는 비교적 큰 모듈 다운로드 또는 모듈 설치 오류를 인지하고 이를 제어하고 있다고 느끼도록 합니다.
  • 특히 사용자에게 특정 모듈이 필요할 것으로 예상되는 상황에서 모듈 제공 환경을 더욱 최적화합니다.

이 가이드를 읽은 후 Play Core API 샘플 앱을 사용해 보고 이러한 권장사항을 실제로 확인합니다.

사용자에게 알리기

기능을 즉시 사용할 수 없는 경우 사용자에게 알려야 합니다. 사용자가 Google Play에서 기능을 다운로드하기로 결정한 경우 다운로드 진행률을 표시합니다.

요청 상태를 모니터링하여 다운로드 진행률 및 설치 상태를 표시할 수 있습니다. 그러나 표시하려는 UI의 유형은 다운로드 크기에 따라 달라질 수 있습니다.

  • 매우 빠르게 설치할 수 있는 더 작은 모듈(10MB 이하)의 경우 스피너 또는 간단한 '콘텐츠 다운로드 중' 메시지와 같은 표시기를 고려합니다.
  • 다운로드 및 설치에 몇 초 이상 걸릴 수 있는 더 큰 모듈의 경우 그림 1에 표시된 것과 같이 다운로드 및 설치 진행률 표시줄 제공을 고려합니다.

그림 1. 주문형 기능을 다운로드하고 설치할 때 메시지 및 진행률 표시줄 보여주기

설치 지연 및 실패를 적절하게 전달

다운로드가 실패하거나 예상보다 느리게 진행된다면 그림 2 및 3에 표시된 것처럼 진행 중인 작업과 취할 수 있는 조치(있는 경우)를 명확하고 투명하게 사용자에게 전달합니다. 예를 들어 다운로드 요청 상태를 모니터링하는데, 앱에서 API_NOT_AVAILABLE 오류를 수신하면 사용자의 기기에서는 주문형 다운로드를 지원하지 않음을 사용자에게 알립니다.

그림 2. 현재 기능을 설치할 수 없는 이유를 사용자에게 알립니다.

그림 3. 기능을 다운로드하는 데 예상보다 오래 걸리는 이유를 사용자에게 설명합니다.

대량으로 다운로드할 수 있는 권한을 요청하기 전에 값 표시

주문형 모듈이 큰 경우(> 150MB) Google Play에서는 다운로드하기 전에 먼저 사용자가 동의할 것을 요구합니다.

모듈을 요청하기 전에 모듈의 값을 사용자에게 설명합니다. 이는 앱 권한을 요청할 때와 같이 이러한 요청을 하는 이유를 사용자가 이해하는 데 도움이 됩니다. 사용자와 공개적으로 커뮤니케이션하면 다운로드에 동의할 가능성이 커집니다.

예를 들어 전자상거래 앱을 빌드 중인데 증강 현실(AR)을 사용하여 아파트에 가구를 직접 배치해 볼 수 있는 기능이 있다고 가정해 보겠습니다. 이 경우 "거실에 배치된 새 소파를 보고 싶으신가요? 지금 바로 증강 현실 뷰어를 설치하세요."와 같은 메시지를 포함할 수 있습니다.

백그라운드에서 다운로드 및 설치하기

모듈 다운로드 및 설치는 항상 백그라운드에서 진행해야 합니다. 즉, 사용자가 어떤 기능을 사용할 수 있게 될 때까지 기다리는 동안 앱의 다른 부분을 계속 사용할 수 있게 해야 합니다. 그리고 기능을 사용할 수 있게 되면 사용자가 재량에 따라 그 기능을 사용하도록 전환할 수 있게 해주는 알림을 제공해야 합니다.

그림 5와 같이 사용자는 계속 앱을 사용하고 주문형 기능의 설치가 완료되면 알림을 받습니다.

그림 5. 모듈 설치가 완료되었을 때 사용자의 컨텍스트를 갑자기 변경하는 대신, 요청된 기능이 준비되었음을 사용자에게 알려줍니다.

모듈을 사용할 준비가 되면 사용자에게 알리고 기능을 실행할지 여부를 선택할 수 있게 합니다. 이런 방식을 통해 사용자가 자신의 환경을 설정하고 제어할 수 있게 합니다.

경우에 따라 기능이 준비되는 즉시 실행하는 것이 가능합니다. 그러나 사용자의 경험을 방해할 수 있으므로 이 동작이 예상되는 것이고 적절한 것인지 신중하게 고려해야 합니다.

모듈이 더 이상 필요하지 않을 때 기기 저장용량 확보

모든 기능 모듈의 유용한 기능은 개별적으로 제거할 수 있는 기능입니다. 기능 모듈을 더 이상 사용하지 않는다면 Google Play에 그 모듈을 제거하도록 요청하여 사용자의 기기에서 앱의 크기를 줄일 수 있습니다.

예를 들어 리치 미디어가 포함된 강력한 온보딩 플로우가 앱에 있을 수 있습니다. 사용자가 온보딩 플로우를 완료했거나 일정 시간 동안 활성 사용자였다면 Play Core 라이브러리 API를 사용하여 앱의 해당 구성요소만 제거하도록 Google Play에 요청할 수 있습니다.

앱을 처음 설치할 때 포함하는 모듈은 나중에 제거할 수도 있습니다. 예를 들어 신규 사용자에게 앱 사용 방법을 교육하는 모듈은 사용자가 앱을 처음 사용할 때는 중요합니다. 그러나 앱 크기를 줄여야 하는 경우 교육을 완료한 이후에 이 모듈을 제거할 수 있습니다.

고급 도움말

일반적으로 사용자가 주문형 기능 모듈의 기능을 사용하겠다는 의도를 명시적으로 표시하는 상황을 처리해야 합니다.

그러나 사용자가 기능을 사용하겠다는 신호를 보내기 전에 기능을 사용할 가능성이 있는 시점을 예측하고 싶을 수 있습니다. 다음 가이드라인에서는 요리 레시피를 다운로드하여 생성할 수 있는 앱을 예시로 사용해 사용자 요구를 예측하여 모듈 제공 환경을 최적화하는 방법에 관해 설명합니다.

현재 세션에서 사용자에게 기능이 필요할지 예상합니다. 사용자가 자신의 레시피를 생성하고 커뮤니티와 공유하려는 경우 레시피 앱의 계정만 생성하면 되는지 여부를 고려해야 합니다. 계정 생성은 사용자가 '레시피 추가'를 탭하기 전에 자신의 레시피를 추가하고 기능 모듈 다운로드를 시작하려 한다는 신호로 사용할 수 있습니다. 이 접근 방식을 앱의 다른 사용자 경험에 적용하여 기능 다운로드 프로세스가 더 원활히 이루어지게 할 수 있습니다.

예정된 세션에서 사용자에게 기능이 필요할지 예상합니다. 앱이 주문형 모듈을 즉시 다운로드하고 설치하지 않아도 되는 경우 앱이 백그라운드에 있을 때 설치하도록 연기할 수 있으며 Google Play에서 다운로드 및 설치를 대신 처리합니다. 예를 들어 요리 앱의 계절 레시피를 새로 출시하고 싶은데 사용자의 현재 세션에서는 이 레시피의 우선순위가 높지 않다고 가정하겠습니다. 앱이 백그라운드에 있을 때 이 레시피를 다운로드하여 설치하도록 Google Play에 요청할 수 있습니다. 이 방식은 당장은 아니지만 향후에 필요할 수 있는 대용량 기능(>10MB)에 특히 유용합니다.

앱 설치에 앞서 사용자에게 기능이 필요할지 예상합니다. 사용자 국가, 기기 하드웨어 기능 및 API 수준에 따라 설치 시에 기능을 포함하도록 조건부 제공 지원 기능을 추가하고 싶을 수 있습니다. 예를 들어 조건부 모듈에 돼지고기를 사용하는 레시피를 포함하되 돼지고기 요리를 피하는 것이 주류를 이루는 지역에서는 앱 설치에서 이 모듈을 생략하고 싶을 수 있습니다.

참고 자료

Android App Bundle에 관한 자세한 내용은 다음 자료를 참조하세요.

샘플

  • PlayCore API 샘플: PlayCore API를 사용하여 주문형 기능을 요청하고 다운로드하는 방법을 보여줍니다.
  • 동적 코드 로드 샘플: 설치된 기능 모듈에서 안전하게 코드에 액세스하는 세 가지 접근 방식을 보여줍니다.

Codelab

  • 첫 번째 Android App Bundle: Android App Bundle의 기본 원리를 살펴보고 Android 스튜디오를 사용하여 자신만의 고유한 App Bundle 구성을 빠르게 시작하는 방법을 보여주는 Codelab입니다. 이 Codelab에서는 bundletool을 사용하여 App Bundle을 테스트하는 방법도 살펴봅니다.
  • 주문형 모듈: 주문형 기능 모듈을 다운로드하여 설치하는 앱을 만드는 데 도움을 줍니다.

블로그 게시물

동영상