앱 작업 빌드

앱 작업을 통해 사용자는 Google 어시스턴트에 요청하거나 어시스턴트에서 추천하는 Android 바로가기를 사용하여 Android 앱의 기능을 실행할 수 있습니다. 다음은 앱 작업으로 Android 앱을 확장하는 기본 단계입니다.

  1. 트리거할 인앱 기능 및 이와 일치하는 내장 인텐트(BII)를 식별합니다.
  2. BII의 처리 세부정보를 제공합니다.
  3. 앱 작업의 바로가기를 어시스턴트로 푸시합니다.
  4. 테스트 기기에서 앱 작업을 미리 봅니다.
  5. 앱의 테스트 버전을 만듭니다.
  6. 앱 작업 검토 및 배포를 요청합니다.

원하는 경우 어시스턴트에서 사용자에게 추천할 수 있도록 어시스턴트에 제공할 동적 바로가기를 정의할 수 있습니다. 앱 작업 Codelab에 따라 샘플 앱을 사용하여 앱 작업을 만듭니다.

요구사항

앱 작업 개발을 시작하기 전에 앱과 앱이 다음 요구사항을 충족하는지 확인하세요.

  • Google Play Console 액세스 권한이 있는 Google 계정이 있어야 합니다.
  • 앱 작업은 Google Play 스토어에 게시된 앱에만 사용할 수 있으므로 앱을 Google Play 스토어에 게시해야 합니다. 또한 앱 작업이 관리 Google Play에서 지원되지 않으므로 앱은 직장 프로필 용도여서는 안 됩니다.
  • 앱 작업을 테스트하려면 실제 기기나 가상 기기가 필요합니다.
  • 최신 버전의 Android 스튜디오가 필요합니다.
  • Android 스튜디오, 테스트 기기의 Google 앱, Google Play Console에 로그인할 때 동일한 Google 계정을 사용해야 합니다.
  • 테스트 기기에서 어시스턴트를 설정하고 버튼을 길게 터치하여 테스트해야 합니다.

내장 인텐트와 앱 기능 일치

사용자가 음성 요청으로 이동하려는 Android 앱의 기능을 식별하고 내장 인텐트 참조를 검토하여 사용 사례에 적합한 BII를 찾습니다. BII는 실행하려는 작업과 관련된 사용자 쿼리를 모델링하므로 앱의 주요 기능 및 사용자 흐름과 일치하는 BII를 찾습니다.

거의 모든 Android 앱에서 사용할 수 있는 일반 BII가 있습니다. actions.intent.GET_THING BII를 사용하여 기본 인앱 검색을 어시스턴트로 확장하거나 actions.intent.OPEN_APP_FEATURE BII를 구현하여 사용자가 음성으로 특정 앱 기능을 실행하도록 하는 것을 예로 들 수 있습니다.

카테고리 또는 카테고리별 사용 사례를 지원하는 BII도 있습니다. 예를 들어 음식 주문 앱은 actions.intent.ORDER_MENU_ITEM BII를 사용할 수 있습니다.

우수한 사용자 환경을 보장하고 발생할 수 있는 승인 지연을 방지하려면 구현하는 각 BII가 인앱 기능과 관련이 있어야 합니다.

앱 작업은 어시스턴트 앱에서 Android 인텐트를 시작하여 사용자를 앱의 특정 콘텐츠로 바로 안내하는 방식으로 작동합니다. targetClasstargetPackage 필드를 지정하여 활동을 명시적으로 실행하도록 인텐트를 정의할 수 있습니다. 앱에서 이미 Android 딥 링크 URL을 구현한 경우 처리를 위해 딥 링크를 사용하도록 인텐트를 구성할 수 있습니다. 자세한 내용은 활동 딥 링크 테스트 섹션을 참고하세요.

내장 인텐트의 처리 세부정보 제공

앱 작업을 빌드하는 대부분은 선택된 BII와 그에 상응하는 처리를 지정하는 Android 앱의 shortcuts.xml 리소스 파일에서 기능을 선언하는 것입니다. BII는 작업에 관한 사용자 쿼리를 모델링하며 처리 인텐트는 어시스턴트에 작업 실행 방법에 관한 정보를 제공합니다.

shortcuts.xml 파일에서 BII는 <capability> 요소로 표시되고 각 처리는 <intent> 요소로 표시됩니다.

<shortcuts>
    <capability android:name="actions.intent.ORDER_MENU_ITEM">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.example.app"
            android:targetClass="com.example.app.browse">
            <parameter
                android:name="menuItem.name"
                android:key="query">
            </parameter>
        </intent>
    </capability>

대부분의 BII의 경우 schema.org 항목을 기반으로 사용자 쿼리에서 인텐트 매개변수를 추출하게 됩니다. 그러면 앱에서 이러한 BII 매개변수를 사용하여 사용자를 원하는 기능으로 안내합니다. 예를 들어 위의 코드는 menuItem.name BII 매개변수를 query Android intent 매개변수에 매핑합니다.

딥 링크를 사용하여 작업을 처리하는 경우 urlTemplate 필드를 사용하여 어시스턴트가 생성하는 딥 링크 URL을 정의합니다.

<shortcuts>
    <capability android:name="actions.intent.ORDER_MENU_ITEM">
        <intent android:action="android.intent.action.VIEW">
            <url-template android:value="myfoodapp://browse{?query}" />
            <parameter android:name="menuItem.name"
                android:key="query"
                android:mimeType="text/*">
            </parameter>
        </intent>
    </capability>
</shortcuts>

앱 작업을 shortcuts.xml 파일에 추가하는 방법에 관한 중요한 세부정보는 shortcuts.xml 만들기를 참고하세요. 이 페이지에서는 앱에 필요한 매개변수 값을 지정하는 방법도 설명합니다.

GET_THING 내장 인텐트 구현

앱에 검색 기능이 있다면 이 기능에 actions.intent.GET_THING BII를 구현해야 합니다. 그러면 어시스턴트는 사용자가 "Hey Google, Example 앱에서 Example Thing 검색해 줘"와 같은 쿼리를 할 때 사용자를 앱의 검색 기능으로 전달하여 인앱 검색결과를 확인할 수 있습니다.

다른 BII를 구현할 때 shortcuts.xml 파일에서 actions.intent.GET_THING BII의 <capability>를 구현합니다. 사용자 쿼리를 앱의 검색 기능으로 전달하는 처리를 하나 이상 제공하는 한 GET_THING에 여러 처리를 사용할 수 있습니다.

다음은 shortcuts.xmlactions.intent.GET_THING BII를 추가하는 예입니다.

  <capability android:name="actions.intent.GET_THING">
    <intent
      android:targetPackage="com.example.myapp"
      android:targetClass="com.example.myapp.MySearchActivity">
      <parameter android:name="thing.name" android:key="query" />
    </intent>
  </capability>

검색 Activity에서 intent의 추가 데이터에서 검색어를 추출하여 앱의 검색 기능에 전달합니다. 위 코드에서 query 키로 전달된 검색어는 "thing.name" BII 매개변수에 매핑됩니다. 그런 다음 쿼리를 사용하여 검색을 실행하고 사용자 인터페이스에 결과를 표시합니다.

선택사항: 어시스턴트에 앱 작업의 바로가기 푸시

작업의 기능을 정의하면 사용자가 "Hey Google, ExampleApp에서 피자 주문해 줘"와 같이 말하여 작업을 시작할 수 있습니다. 어시스턴트는 적절한 때에 작업의 Android 바로가기를 사용자에게 추천할 수 있으므로 사용자가 작업을 검색하고 재생할 수 있습니다. 어시스턴트는 동적 바로가기와 정적 바로가기를 모두 추천할 수 있습니다.

어시스턴트에 동적 바로가기를 푸시하려면 Google 바로가기 통합 라이브러리를 사용하세요. 이 Jetpack 라이브러리를 사용하면 어시스턴트가 단축어를 가져와 적절한 시점에 사용자에게 추천할 수 있습니다.

자세한 내용은 어시스턴트에 동적 바로가기 푸시를 참고하세요.

앱 작업 미리 보기

개발 및 테스트 중에 Android 스튜디오용 Google 어시스턴트 플러그인을 사용하여 앱 작업이 앱에서 작동하는지 테스트합니다. 이 플러그인은 어시스턴트에서 Google 계정용 앱 작업의 미리보기를 만듭니다. 테스트 도구를 사용하면 사용자에게서 받을 것으로 예상되는 입력 매개변수를 BII에 제공하여 실제 테스트 기기나 에뮬레이터에서 처리를 테스트할 수 있습니다.

앱 작업을 미리 보는 동안 기기에서 음성으로 쿼리를 트리거할 수 있습니다. 이 기능은 앱 작업과 관련된 BII 참조에 나열된 쿼리에만 사용할 수 있습니다. 음성 트리거는 일반 테스트가 아닌 데모용으로만 사용하세요.

검토를 위해 앱을 제출하기 전에 Google Play Console용 개발자 도구를 사용하여 초안 모드로 앱을 테스트하세요. Google Play Console을 사용하여 앱 초안을 배포하는 방법에 관한 자세한 내용은 버전 준비 및 출시를 참고하세요.

테스트 버전 만들기

추가 테스터로 앱 작업을 테스트할 준비가 되면 앱의 내부 또는 비공개 테스트 버전을 만듭니다. 기본적으로 내부 및 비공개 출시 테스터는 이미 검토 및 승인된 앱 작업에 액세스할 수 있습니다.

승인받지 않은 작업을 비롯하여 모든 앱 작업에 테스트 액세스 권한을 부여하려면 테스터에게 앱 작업 개발 프로그램 Google 그룹에 참여하도록 안내합니다. 이 그룹의 구성원은 비공개 및 내부 테스트 버전의 모든 앱 작업에 액세스할 수 있으므로 앱 작업 테스트 도구를 사용하여 미리보기를 만들 필요가 없습니다. 그룹에 가입한 후 액세스 권한을 사용할 수 있기까지 최대 3시간이 걸릴 수 있습니다.

앱 작업 검토 및 배포 요청

앱 작업은 검토 및 승인될 때까지 게시된 앱 또는 공개 테스트 버전의 사용자에게 제공되지 않습니다. 앱 작업 검토는 Google Play의 Android 앱 검토 및 배포 상태에 영향을 주지 않습니다. 앱 제출이 승인되어 Play 스토어에 게시되더라도 Google에서 shortcuts.xml를 검토 중일 수 있습니다. 앱 작업은 검토도 승인될 때까지 최종 사용자에게 작동하지 않습니다.

앱을 배포하면 앱 작업이 활성 상태로 유지됩니다. 하지만 재배포 버전은 Google의 검토 대상입니다. 새 버전이 제대로 작동하지 않거나 정책을 위반하는 경우 Google은 앱과 관련해 앱 작업을 비활성화할 권리를 보유합니다.

앱 작업을 제출하여 검토받으려면 다음 단계를 따릅니다.

  1. Google Play Console에서 Actions on Google 서비스 약관에 동의합니다(고급 설정 > Actions on Google).

    Google Play Console의 Actions on Google 서비스 약관

  2. 평소 게시하듯이 Google Play Console에 shortcuts.xml가 포함된 앱을 업로드합니다.

  3. Play Console에 앱을 업로드하면 앱 작업 검토 상태에 관한 자세한 정보가 담긴 이메일이 Play Console 계정의 이메일로 전송됩니다. 앱 작업 검토 상태에 관해 궁금한 점이 있으면 Actions on Google 개발자 지원팀에 문의할 수도 있습니다. 문의 양식에서 앱 패키지 ID를 제공하고 무엇을 도와드릴까요? 선택 상자에서 앱 작업 검토를 선택합니다.

딥 링크를 사용하여 앱 작업을 통해 Activity를 실행하려면 딥 링크 URL로 Activity를 설정하고 Android 앱 매니페스트에 이에 상응하는 인텐트 필터가 있어야 합니다.

활동에 액세스할 수 있고 딥 링크를 사용하는 앱 작업을 통해 활동을 트리거할 수 있는지 테스트하려면 다음 adb 명령어를 실행합니다.

$ adb shell am start -a android.intent.action.VIEW -d "AppLinksURL"

예:

$ adb shell am start -a android.intent.action.VIEW -d "https://www.example.com/deeplink"

활동이 adb 명령어로 올바르게 실행되지 않으면 다음을 확인합니다.

  • 앱 매니페스트 파일에서 활동에 android:exported=true가 있으므로 Google 어시스턴트의 인텐트를 사용하여 활동을 실행할 수 있습니다.
  • 앱 링크 URL을 사용하는 경우 Android App Links 처리의 모든 단계를 따릅니다.

앱 작업 정책

앱 작업은 작업을 트리거하는 사용자가 의도한 환경을 받을 수 있도록 특정 정책을 준수해야 합니다. 최상의 사용자 환경을 제공하고 Play 스토어 검토 지연 또는 거부를 방지하려면 앱을 제출하기 전에 다음 정책을 검토하세요.

  • 사용자 의도 콘텐츠로 사용자 유도

    앱 작업 내장 인텐트 (BII) 또는 매개변수는 사용자가 의도한 관련 작업으로만 사용자를 안내해야 합니다. 여기에는 인앱 콘텐츠, 웹사이트 콘텐츠 또는 Slice나 위젯에 표시된 정보가 포함될 수 있습니다(단, 사용자의 경험을 의도한 것이어야 함).

    예를 들어 ORDER_MENU_ITEM BII의 구현은 사용자가 지정된 메뉴 항목 또는 요리 유형의 주문을 시작하는 데 도움이 됩니다. 이 정책의 유일한 예외는 OPEN_APP_FEATURE BII가 사용자를 앱의 홈 화면으로 안내하는 경우입니다.

  • 사용자를 관련성 있는 웹 콘텐츠로 안내

    사용자가 웹페이지 콘텐츠로 리디렉션되는 경우 웹사이트가 사용자의 의도와 관련이 있고 브랜드가 소유하고 있어야 합니다.

    예를 들어 GET_RESERVATION BII를 트리거하는 사용자를 앱 브랜드 exampledomain.com에 속하지 않는 google.com/travel로 리디렉션하는 것은 정책 위반입니다. 위반의 또 다른 예로는 GET_CALL_HISTORY BII를 트리거하는 사용자를 exampledomain.com/payment로 리디렉션하여 사용자가 구매해야 하는 경우를 들 수 있습니다.

  • 관련 앱 작업 BII 구현

    구현된 BII는 앱의 콘텐츠 및 기능과 직접 관련이 있어야 합니다.

    예를 들어 앱이 커뮤니케이션 Play 스토어 카테고리에 있는 경우 식음료 카테고리의 앱에 권장되는 ORDER_MENU_ITEM BII를 구현하면 안 됩니다.

  • 관련 맞춤 인텐트 구현

    맞춤 인텐트에 관해 정의된 쿼리는 앱의 콘텐츠 및 기능과 관련이 있습니다. 이 정책을 위반할 수 있는 예로는 교통 Play 스토어 카테고리의 앱에 관한 '부리토 레시피 보여 줘'와 연결된 쿼리 패턴을 사용하여 custom.action.intent.GET_RECIPE 인텐트를 만드는 것을 들 수 있습니다.