소리내어 읽기는 Android 기기에서 사용할 수 있는 Google 어시스턴트 기능으로, 사용자가 뉴스 기사나 블로그 게시물과 같은 긴 형식의 웹 콘텐츠를 읽을 수 있는 또 다른 방법을 제공합니다. 사용자가 "Hey Google, 소리내어 읽어 줘"라고 말하면 앱이 웹 기반 콘텐츠를 소리 내어 읽고 읽는 단어를 강조표시하며 페이지를 자동으로 스크롤하도록 할 수 있습니다. 이 기능에 관한 자세한 내용은 소리내어 읽기 제품 업데이트 게시물을 참고하세요.
웹 기반 콘텐츠가 있는 Android 앱은 onProvideAssistContent()
메서드로 어시스턴트에 정보를 제공하여 소리내어 읽기를 지원할 수 있습니다.
이 프로세스를 통해 어시스턴트와 공유되는 데이터 구조를 유지할 수 있습니다. 그러면 공유 앱 콘텐츠를 수신한 사용자는 텍스트나 스크린샷 대신 딥 링크로 연결되거나 콘텐츠를 직접 수신할 수 있습니다.
웹 기반 콘텐츠 및 앱의 공유 가능한 entity
에 onProvideAssistContent()
를 구현하세요.
어시스턴트에 콘텐츠 제공
소리내어 읽기에서 콘텐츠에 액세스하려면 앱에서 어시스턴트에 콘텐츠 관련 정보(예: 웹 URI, 일부 기본 컨텍스트)를 제공해야 합니다. 그러면 어시스턴트는 콘텐츠를 검색하여 사용자에게 소리 내어 읽어 줄 수 있습니다.
WebView 또는 Chrome 맞춤 탭을 사용하여 웹 기반 콘텐츠를 이미 구현한 Android 앱의 경우 시작점으로 소리내어 읽기에 동일한 웹 URI를 사용하세요.
소리내어 읽기 기능을 내장 인텐트와 결합할 때는 앱 작업을 호출한 후 사용자의 작업 흐름에서 최종 앱 활동에 관해 onProvideAssistContent()
만 구현하면 됩니다.
예를 들어 앱에서 뉴스 기사를 표시하는 경우 기사를 표시하는 최종 화면에서 onProvideAssistContent()
를 구현합니다. 진행 중인 화면이나 미리보기 화면에서 구현할 필요는 없습니다.
AssistContent
의 uri
필드에 콘텐츠의 웹 URI를 제공합니다.
structuredData
필드에서 schema.org 어휘를 사용하여 문맥 정보를 JSON-LD 객체로 제공합니다.
다음 코드 스니펫은 어시스턴트에 콘텐츠를 제공하는 예를 보여줍니다.
Kotlin
override fun onProvideAssistContent(outContent: AssistContent) { super.onProvideAssistContent(outContent) // Set the web URI for content to be read from a // WebView, Chrome Custom Tab, or other source val urlString = url.toString() outContent.setWebUri(Uri.parse(urlString)) // Create JSON-LD object based on schema.org structured data val structuredData = JSONObject() .put("@type", "Article") .put("name", "ExampleName of blog post") .put("url", outContent.getWebUri()) .toString() outContent.setStructuredData(structuredData) }
Java
@Override public void onProvideAssistContent(AssistContent outContent) { // Set the web URI for content to be read from a // WebView, Chrome Custom Tab, or other source String urlString = url.toString(); outContent.setWebUri(Uri.parse(urlString)); try { // Create JSON-LD object based on schema.org structured data String structuredData = new JSONObject() .put("@type", "Article") .put("name", "ExampleName of blog post") .put("url", outContent.getWebUri()) .toString(); outContent.setStructuredData(structuredData); } catch (JSONException ex) { // Handle exception Log.e(TAG, ex.getMessage()); } super.onProvideAssistContent(outContent); }
onProvideAssistContent()
를 구현할 때는 각 entity
에 관해 최대한 많은 데이터를 제공하세요. 다음 필드는 필수입니다.
@type
.name
.url
(URL 주소 지정이 가능한 콘텐츠인 경우에만 필요)
onProvideAssistContent()
사용에 관한 자세한 내용은 Android 개발자 문서의 어시스턴트용 상황별 콘텐츠 최적화 가이드를 참고하세요.