앱 작업을 통해 사용자는 Google 어시스턴트와 대화하고 특정 페이지로 바로 이동할 수 있습니다 사용자가 "Hey Google, 차량 예약해 줘"라고 말하면 예시 앱' 포그라운드 앱 호출을 사용하면 사용자가 이미 앱을 연 경우 환경을 추가로 개선할 수 있습니다.
포그라운드 앱 호출을 사용하면 기본 제공 인텐트 (BII)를 특정 활동이 있는 동안 앱 이름을 언급하도록 요구 기기 포그라운드.
예를 들어 포그라운드에 차량 공유 앱이 있는 사용자가 Google 어시스턴트에 "마운틴 뷰로 가는 차량 예약해 줘"라고 말하거나 입력합니다. 앱은 이 입력을 사용하여 목적지 필드를 마운틴 뷰로 설정합니다. 그런 다음 사용자가 말하거나 "SFO에서 출발하는 차량 예약해 줘"라고 입력하면 앱에서 승차 위치를 설정할 수 있습니다 앱의 상태를 보존하면서 위치를 호출할 수 있습니다
제한사항
포그라운드 앱 호출은 다음 내장 인텐트(BII)에만 사용할 수 있습니다.
actions.intent.CREATE_MONEY_TRANSFER
actions.intent.CREATE_TAXI_RESERVATION
actions.intent.OPEN_APP_FEATURE
actions.intent.ORDER_MENU_ITEM
actions.intent.PAUSE_EXERCISE
actions.intent.RECORD_EXERCISE
actions.intent.RECORD_FOOD_OBSERVATION
actions.intent.RESUME_EXERCISE
actions.intent.START_EXERCISE
actions.intent.STOP_EXERCISE
특정 BII의 포그라운드 앱 호출과 관련된 언어 지원 및 쿼리 예를 보려면 내장 인텐트 참조를 확인하세요.
포그라운드 앱 호출 지원
포그라운드 앱 호출 지원을 추가하려면 원하는 포그라운드 활동에 기반하여 처리 동작을 추가해야 합니다. 이러한 활동이 포그라운드에 있고 앱 작업이 호출될 때 어시스턴트는 추가 플래그와 함께 딥 링크 인텐트를 해당 활동에 전달하므로 앱에서 상태를 업데이트할 수 있습니다.
BII의 포그라운드 앱 호출을 구현하려면 다음을 따르세요.
shortcuts.xml
파일에서 BII에<intent>
태그를 추가합니다.<capability>
: 포그라운드 앱 호출을 지원하려는 경우<intent>
태그 내에서<extra>
태그를 추가합니다.<extra>
태그에서android:key
를"requiredForegroundActivity"
로 설정하고android:value
를 포그라운드에 있어야 하는 활동으로 설정합니다. 클래스 없이 활동 지정 약어, 앱 패키지 이름 사용, 슬래시 (/) 뒤에 활동 이름(APP_PACKAGE_NAME/ACTIVITY_NAME
)이 표시됩니다."requiredForegroundActivity"
에 지정한 포그라운드 활동에서onNewIntent()
메서드를 구현하여SINGLE_TOP
플래그가 설정된 딥 링크 인텐트를 처리합니다. 어시스턴트는 지정된 활동이 포그라운드에 있을 때 이 플래그가 있는 딥 링크 인텐트를 처리로 전달합니다.onNewIntent()
호출을 포그라운드 활동의 업데이트로 취급하고 딥 링크에서 추출된 매개변수를 사용하여 이 활동의 상태를 관리합니다.
앱이 라우터 활동을 사용하여 모든 외부 딥 링크가 라우터 활동에 대한 자세한 내용은 라우터 활동 처리
예
shortcuts.xml
파일 예의 다음 스니펫은
requiredForegroundActivity
속성:
<capability name="actions.intent.CREATE_TAXI_RESERVATION"> <!-- Trigger with foreground app invocation if MainActivity is in the foreground. --> <intent android:targetClass="com.example.app.MainActivity" android:targetPackage="com.example.app"> <parameter android:name="taxiReservation.dropoffLocation.name" android:key="dropoff" /> <extra android:key="requiredForegroundActivity" android:value="com.example.app/com.example.app.MainActivity" /> </intent> <!-- This won't trigger if MainActivity is in the foreground. --> <intent android:targetClass="com.example.app.MainActivity" android:targetPackage="com.example.app"> <parameter android:name="taxiReservation.dropoffLocation.name" android:key="dropoff" /> </intent> </capability>
사용자 권한
![기기 설정에서 사용자는 포그라운드 앱 호출이 작동하도록 '화면의 텍스트 사용'을 사용 설정해야 합니다.](https://developer.android.com/static/guide/app-actions/images/device-setting-assist-screen.png?authuser=9&hl=ko)
사용자에 대해 포그라운드 앱 호출이 작동하려면 사용자는 다음 권한이 있어야 합니다. 화면의 텍스트 사용 기기 설정이 사용 설정되어 있어야 합니다. 이 설정의 위치와 정확한 이름은 OEM 또는 기기 제조업체에 따라 다를 수 있습니다. 예를 들어 기기 설정을 사용자 기기에서 화면 컨텍스트 사용이라고 할 수도 있습니다.
Pixel 휴대전화에서 이 Android 설정을 사용하려면 먼저 설정 > 앱 및 알림 > 기본 앱 > 지원 앱. 그런 다음 지원 및 음성 입력 화면에서 화면의 텍스트 사용을 사용 설정합니다.
호출 테스트
포그라운드 앱 호출을 사용해 보려면 다음 단계를 따르세요.
- 사용자 권한 섹션의 안내에 따라 화면의 텍스트 사용 기기 설정을 사용 설정합니다.
- 필수 포그라운드 활동으로 나열된 활동으로 앱을 엽니다.
- 누르기 및 홈 버튼을 길게 눌러 현재 화면 위에 오버레이로 어시스턴트를 엽니다. 있습니다. 구현한 BII에 해당하는 쿼리 제공 앱 이름 자체를 언급할 필요가 없습니다. 성공하면 앱이 상태를 유지하고 활동을 다시 시작하지 않으면서 쿼리를 기반으로 자체적으로 업데이트됩니다.
라우터 활동 처리
일부 앱은 단일 게이트키핑 라우터 활동을 사용하여 모든 외부 딥 링크를 처리합니다. 그런 다음 라우터 활동은 적절한 비즈니스 로직 활동(확인 및 검증 후)을 시작하고 비즈니스 로직 활동을 포그라운드에 반환합니다.
딥 링크를 트리거하면 라우터 활동이 작업 스택, 포그라운드 활동 위에 위치. 라우터 활동을 사용하는 앱의 경우 라우터 활동이 Google 어시스턴트로부터 전송된 인텐트를 현재 포그라운드 활동 인스턴스로 전달하도록 해야 합니다. 이러한 요구사항을 달성하는 방법은 라우터 활동이 시작되는 위치에 따라 달라집니다.
라우터가 비즈니스 로직 활동과 동일한 작업 스택에서 시작되는 경우 SINGLE_TOP
, CLEAR_TOP
, NEW_TASK
의 비트 OR을 사용하여 인텐트를 전달합니다.
Kotlin
Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK
자바
Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK
라우터가 비즈니스 로직과 별도의 작업 스택에서 시작되는 경우
SINGLE_TOP
플래그를 사용하여 인텐트를 비즈니스에 전달
대신 논리 활동을 사용해야 합니다.