Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Журнал действий пользователя

Поиск Google использует информацию о действиях, которые пользователи выполняют над общедоступным и личным контентом в приложении, чтобы повысить рейтинг результатов поиска и предложений. Чтобы повысить удобство работы пользователей при поиске контента в вашем приложении, регистрируйте действия пользователей через API индексации приложений.

Какие действия вы должны войти?

При регистрации действий пользователя используйте следующие рекомендации:

  • Журнал взаимодействия пользователя с приложением, включая просмотр контента, создание нового контента или обмен контентом.
  • Только действия в журнале, которые пользователь выполняет с контентом напрямую, а не фоновые действия в приложении, такие как входящие сообщения или синхронизации списка воспроизведения.
  • Не регистрируйте действия для каждого элемента в списке, когда пользователь взаимодействует со всем списком. Например, не регистрируйте действия просмотра для каждого сообщения, когда пользователь открывает свою папку «Входящие».

Сборка и запись действий

Чтобы построить объект Action , определите следующие параметры:

  • Название и URL контента
  • Соответствующий Action.Builder для типа действия

Затем запишите действие:

  • Для действий, которые выполняются в течение более длительного периода времени (например, просмотр рецепта), вызовите методы start() и end() соответственно. Например, вы должны регистрировать отдельные вызовы для просмотра рецепта (начало) и затем закрытия рецепта (конец).
  • Для мгновенных действий вызовите метод end() как только пользователь выполнит действие. Например, когда пользователь комментирует заметку, запишите мгновенное действие одним вызовом метода end() .

О типах действий: используйте правильную константу Action.Builder для своего контента. Например, используйте константу VIEW_ACTION для открытия статического контента и константу WATCH_ACTION для воспроизведения видеоконтента. Смотрите список констант для класса Action.Builder .

Относительно фрагментов: Вы структурируете фрагменты так же, как структурировано действие в примере ниже. Но поскольку фрагменты могут выполняться много раз в рамках одного действия или их может быть несколько, позаботьтесь о том, чтобы вызов API выполнялся только один раз. Вот несколько рекомендаций, которым нужно следовать:

  • Если действие вызывает API, то не вызывайте API снова из любого фрагмента в действии.
  • Если действие не вызывает API, и вы хотите, чтобы фрагмент вызывал его, убедитесь, что только один фрагмент вызывает API, только один раз.
Начало и конец

В приведенном ниже примере используется общедоступный контент.

Ява

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

Котлин + KTX

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()
}
моментальный

В приведенном ниже примере используется личный контент.

Ява

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

Котлин + KTX

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

Далее: протестируйте вашу реализацию