사용자 작업 로깅

Google 검색에서는 검색결과와 추천 순위 기능을 개선하고자 사용자가 앱의 공개 콘텐츠와 개인 콘텐츠에 취한 작업에 대한 정보를 활용합니다. App Indexing API를 통해 사용자 작업을 기록하면 앱의 콘텐츠를 검색하는 사용자의 검색 경험을 개선할 수 있습니다.

기록해야 하는 작업

사용자 작업을 기록할 때 다음 가이드라인을 따릅니다.

  • 콘텐츠 보기, 새 콘텐츠 작성, 콘텐츠 공유 등 사용자가 앱에서 상호작용한 부분을 기록합니다.
  • 사용자가 콘텐츠에 직접 실행한 작업만 기록합니다. 메시지 수신 또는 재생목록 동기화 등 앱 내 백그라운드 작업은 해당하지 않습니다.
  • 사용자가 전체 목록과 상호작용한다면 목록에 있는 항목마다 작업을 기록하지 않습니다. 예를 들어 사용자가 받은편지함을 열 때마다 각 메시지에 대한 보기 작업을 기록하지 않습니다.

작업 빌드 및 로깅

Action 객체를 빌드하려면 다음 매개변수를 정의합니다.

  • 콘텐츠의 제목 및 URL
  • 작업 유형에 해당하는 Action.Builder

그런 다음 작업을 로깅합니다.

  • 장기간에 걸쳐 발생하는 작업(예: 레시피 보기)의 경우 start()end() 메소드를 둘 다 적절하게 호출합니다. 예를 들어 레시피를 보기 위한 호출(start)과 레시피를 닫는 호출(end)을 별도로 로깅할 수 있습니다.
  • 순간적인 작업의 경우 사용자가 작업을 실행하는 즉시 end() 메소드를 호출합니다. 예를 들어 사용자가 메모에 댓글을 쓸 때 end() 메소드를 한 번 호출하여 순간적인 작업을 로깅합니다.

작업 유형 정보: 콘텐츠에 맞는 Action.Builder 상수를 사용합니다. 예를 들어 정적 콘텐츠를 열 때는 VIEW_ACTION 상수를, 동영상 콘텐츠를 재생할 때는 WATCH_ACTION 상수를 사용합니다. 상수 목록에서 Action.Builder 클래스를 참조하세요.

프래그먼트: 아래 예의 활동 구조와 동일하게 프래그먼트를 구조화해야 합니다. 그러나 한 활동 내에서 프래그먼트가 여러 번 실행되거나 프래그먼트가 여러 개일 수도 있으므로 API를 한 번만 호출하도록 주의하세요. 다음 가이드를 따릅니다.

  • 활동에서 API를 호출하는 경우 활동에 포함된 프래그먼트에서 API를 다시 호출하지 않습니다.
  • 활동에서 API를 호출하지 않고 프래그먼트에서 대신 호출하려면 하나의 프래그먼트만 API를 한 번 호출하도록 합니다.
시작과 끝이 있는 작업

아래는 공개 콘텐츠를 사용한 예입니다.

자바
Android

@Override
protected void onStart() {
    super.onStart();
    // If you’re logging an action on content that hasn’t been added to the index yet,
    // add it first.
    // See <a href="https://firebase.google.com/docs/app-indexing/android/personal-content#update-the-index">https://firebase.google.com/docs/app-indexing/android/personal-content#update-the-index</a>.

    FirebaseUserActions.getInstance().start(getRecipeViewAction());
}

@Override
protected void onStop() {
    FirebaseUserActions.getInstance().end(getRecipeViewAction());
    super.onStop();
}

Kotlin
Android

override fun onStart() {
    super.onStart()
    // If you’re logging an action on content that hasn’t been added to the index yet,
    // add it first.
    // See <a href="https://firebase.google.com/docs/app-indexing/android/personal-content#update-the-index">https://firebase.google.com/docs/app-indexing/android/personal-content#update-the-index</a>.

    FirebaseUserActions.getInstance().start(getRecipeViewAction())
}

override fun onStop() {
    FirebaseUserActions.getInstance().end(getRecipeViewAction())
    super.onStop()
}
즉각적인 작업

아래는 개인 콘텐츠를 사용한 예입니다.

자바
Android

public void displayNoteDialog(final String positiveText, final String negativeText) {
    // ...

    // If you’re logging an action on content that hasn’t been added to the index yet,
    // add it first.
    // See <a href="https://firebase.google.com/docs/app-indexing/android/personal-content#update-the-index">https://firebase.google.com/docs/app-indexing/android/personal-content#update-the-index</a>.

    FirebaseUserActions.getInstance().end(getNoteCommentAction());
    // ...
}

public Action getNoteCommentAction() {
    return new Action.Builder(Action.Builder.COMMENT_ACTION)
            .setObject(mNote.getTitle(), mNote.getNoteUrl())
            // Keep action data for personal connulltent on the device
            .setMetadata(new Action.Metadata.Builder().setUpload(false))
            .build();
}

Kotlin
Android

fun displayNoteDialog(positiveText: String, negativeText: String) {
    // ...

    // If you’re logging an action on content that hasn’t been added to the index yet,
    // add it first.
    // See <a href="https://firebase.google.com/docs/app-indexing/android/personal-content#update-the-index">https://firebase.google.com/docs/app-indexing/android/personal-content#update-the-index</a>.

    FirebaseUserActions.getInstance().end(getNoteCommentAction())
    // ...
}

private fun getNoteCommentAction(): Action {
    return Action.Builder(Action.Builder.COMMENT_ACTION)
            .setObject(note.title, note.noteUrl)
            // Keep action data for personal connulltent on the device
            .setMetadata(Action.Metadata.Builder().setUpload(false))
            .build()
}

다음: 구현 테스트

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.