Ir para o console

Registrar ações do usuário

A Pesquisa Google usa informações sobre as ações que os usuários executam no conteúdo público e pessoal em um app para melhorar a classificação dos resultados e as sugestões da Pesquisa. Para melhorar a experiência dos seus usuários quando eles pesquisam conteúdo no seu aplicativo, registre as ações do usuário por meio da API App Indexing.

Quais ações você precisa registrar?

Use as diretrizes a seguir ao registrar ações do usuário:

  • Registre as interações do usuário com o aplicativo, incluindo a exibição de conteúdo, a criação de conteúdo novo ou o compartilhamento de conteúdo.
  • Registre somente ações em que o usuário recebe conteúdo diretamente, não ações em segundo plano no aplicativo, como mensagens recebidas ou sincronizações de playlist.
  • Não registre ações para cada item em uma lista quando um usuário interage com a lista inteira. Por exemplo, não registre ações de exibição para cada mensagem sempre que um usuário abre a caixa de entrada dele.

Criar e registrar ações

Para criar o objeto Action, defina os seguintes parâmetros:

  • Título e URL do conteúdo
  • Action.Builder apropriada para o tipo de ação

Em seguida, registre a ação:

  • Para ações que ocorrem durante um período maior, como a visualização de um roteiro, chame os métodos start() e end(). Nesses casos, é preciso registrar chamadas separadas para ver a receita ("start") e para fechá-la ("end").
  • Para ações instantâneas, chame o método end() assim que o usuário as executar. Por exemplo, quando um usuário fizer comentários sobre uma observação, registre uma ação instantânea com uma única chamada do método end().

Sobre os tipos de ação: use a constante Action.Builder correta para seu conteúdo. Por exemplo, use a constante VIEW_ACTION para abrir conteúdo estático e WATCH_ACTION para reproduzir conteúdo de vídeo. Consulte a lista de constantes da classe Action.Builder.

Com relação aos fragmentos: os fragmentos são estruturados da mesma maneira que a atividade no exemplo abaixo. Porém, como eles podem ser executados muitas vezes em uma atividade ou podem existir diversos fragmentos, chame a API somente uma vez. Estas são algumas diretrizes a serem seguidas:

  • Se a atividade chamar a API, não a chame novamente de nenhum fragmento dentro da atividade.
  • Se a atividade não chamar a API e, em vez disso, você quiser que ela seja chamada por um fragmento, certifique-se de que somente um fragmento chame a API apenas uma vez.
Início e fim

O exemplo abaixo usa conteúdo público.

Java

@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

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()
}
Instantânea

O exemplo abaixo usa conteúdo pessoal.

Java

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

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()
}

Próximo: teste a implementação