IME 및 자동 완성 서비스와 자동 완성 통합

Android 11부터는 시스템이 추천을 메뉴에 표시하는 대신 키보드 및 기타 입력 방식 편집기(IME)가 자동 완성 추천을 인라인, 추천란 또는 유사한 요소에 표시할 수 있습니다. 이러한 자동 완성 추천에는 비밀번호 또는 신용카드 정보와 같은 개인 비공개 데이터가 포함될 수 있으므로 추천은 사용자가 선택할 때까지 IME에서 숨겨집니다. 이 기능을 사용하려면 IME 및 비밀번호 관리자와 같은 자동 완성 서비스를 업데이트하세요. IME 또는 자동 완성 서비스가 인라인 자동 완성을 지원하지 않으면 추천은 Android 11 이하 버전과 같이 메뉴에 표시됩니다.

워크플로

이 흐름에서 IME는 현재 키보드 또는 기타 입력 편집기를 의미하며 추천 제공자는 자동 완성 추천의 적절한 제공자를 의미합니다. 입력란 및 사용자 설정에 따라 추천 제공자는 플랫폼 또는 자동 완성 서비스일 수 있습니다.

  1. 사용자는 비밀번호 또는 신용카드 입력란과 같이 자동 완성을 트리거하는 입력란에 집중합니다.

  2. 플랫폼은 현재 IME 및 적절한 추천 제공자를 쿼리하여 IME 및 추천 제공자가 인라인 자동 완성을 지원하는지 확인합니다. IME 또는 추천 제공자가 인라인 자동 완성을 지원하지 않는다면 추천은 Android 10 이하에서와 같이 메뉴에 표시됩니다.

  3. 플랫폼은 IME에 추천 요청을 제공하도록 요청합니다. 이 추천 요청은 표시할 추천의 최대 개수를 지정하고 각 추천의 표시 사양도 제공합니다. 표시 사양은 최대 크기, 텍스트 크기, 색상, 글꼴 데이터와 같은 항목을 지정하여 추천 제공자가 IME의 디자인과 분위기를 일치시킬 수 있도록 합니다.

  4. 플랫폼은 추천 제공자에게 요청된 추천 수까지 제공하도록 요청합니다. 각 추천에는 추천의 UI가 포함된 View를 확장하는 콜백이 포함되어 있습니다.

  5. 플랫폼은 추천이 준비되었음을 IME에 알립니다. IME는 콜백 메서드를 호출하여 각 추천의 View를 확장함으로써 추천을 표시합니다. 사용자의 비공개 정보를 보호하기 위해 IME는 이 단계에서 추천 항목을 확인하지 않습니다.

  6. 사용자가 추천 중 하나를 선택하면 사용자가 시스템 메뉴에서 추천을 선택했을 때와 동일한 방식으로 IME에 알려집니다.

다음 섹션에서는 인라인 자동 완성을 지원하도록 IME 또는 자동 완성 서비스를 구성하는 방법을 설명합니다.

인라인 자동 완성을 지원하도록 IME 구성

이 섹션에서는 인라인 자동 완성을 지원하도록 IME를 구성하는 방법을 설명합니다. IME가 인라인 자동 완성을 지원하지 않는다면 플랫폼은 기본적으로 메뉴에 자동 완성 추천을 표시합니다.

IME에서 supportsInlinedSuggestions 속성을 true로 설정해야 합니다.

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

플랫폼은 자동 완성 추천이 필요할 때 IME의 InputMethodService.onCreateInlineSuggestionsRequest() 메서드를 호출합니다. 이 메서드는 반드시 구현해야 합니다. 다음을 지정하여 InlineSuggestionsRequest를 반환합니다.

  • IME가 원하는 추천 수
  • 추천의 표시 방식을 정의하는 각 추천의 InlinePresentationSpec

플랫폼에 추천이 있을 때 IME의 onInlineSuggestionsResponse() 메서드를 호출하여 추천이 포함된 InlineSuggestionsResponse를 전달합니다. 이 메서드는 반드시 구현해야 합니다. 구현에서 InlineSuggestionsResponse.getInlineSuggestions()를 호출하여 추천 목록을 가져온 후 InlineSuggestion.inflate() 메서드를 호출하여 각 추천을 확장합니다.

인라인 자동 완성을 지원하도록 자동 완성 서비스 구성

이 섹션에서는 인라인 자동 완성을 지원하도록 자동 완성 서비스를 구성하는 방법을 설명합니다. 앱이 인라인 자동 완성을 지원하지 않는다면 플랫폼은 기본적으로 메뉴에 자동 완성 추천을 표시합니다.

자동 완성 서비스에서 supportsInlinedSuggestions 속성을 true로 설정해야 합니다.

<autofill-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

IME에 자동 완성 추천이 필요할 때 플랫폼은 Android 11 미만 버전에서와 마찬가지로 자동 완성 서비스의 onFillRequest() 메서드를 호출합니다. 그러나 서비스는 전달된 FillRequest 객체의 getInlineSuggestionsRequest() 메서드를 호출하여 IME에 의해 생성된 InlineSuggestionsRequest를 가져와야 합니다. InlineSuggestionsRequest는 필요한 인라인 추천 수 및 각 추천의 표시 방식을 지정합니다. IME가 인라인 추천을 지원하지 않으면 메서드는 null을 반환합니다.

자동 완성 서비스는 InlineSuggestionsRequest에 요청된 최대 개수까지 InlinePresentation 객체를 만듭니다. 표시 사양은 InlineSuggestionsRequest에서 지정한 크기 제한을 준수해야 합니다. 추천을 IME에 반환하려면 각 추천에 대해 Dataset.Builder.setValue()를 한 번씩 호출합니다. Android 11에서는 인라인 추천을 지원하기 위해 Dataset.Builder.setValue() 버전을 제공합니다.