Accéder à la console

记录用户操作

Google 搜索会使用与用户对应用中的公开内容和个人内容执行的操作有关的信息,来改进搜索结果和建议的排名。为了改善用户在应用中搜索内容时的体验,请通过 App Indexing API 记录用户操作。

您应该记录哪些操作?

记录用户操作时,请遵循以下准则:

  • 记录用户与应用的互动,包括查看内容、创建新内容或分享内容。
  • 仅记录用户直接对内容执行的操作,而不记录应用中的后台操作(如收到消息或播放列表同步)。
  • 当用户与整个列表互动时,不要对列表中的每项内容都记录操作。例如,不要在用户每次打开收件箱时都将其记录为对每封邮件的查看操作。

构建和记录操作

如需构建 Action 对象,请定义以下参数:

然后,记录操作:

  • 对于持续时间较长的操作(例如查看配方),请相应调用 start()end() 方法。例如,您应分别针对查看配方(开始)和关闭配方(结束)记录不同的调用。
  • 对于瞬时操作,请在用户执行操作后立即调用 end() 方法。例如,当用户在笔记上添加注释时,请单独调用 end() 方法来记录瞬时操作。

关于操作类型:请为您的内容使用正确的 Action.Builder 常量。例如,使用 VIEW_ACTION 常量打开静态内容,而使用 WATCH_ACTION 常量播放视频内容。请参阅常量列表Action.Builder 类)。

关于 Fragment:您可以按以下示例中组织 Activity 的相同方式来组织 Fragment。但是,由于 Fragment 可能会在 Activity 内执行许多次,或者可能有多个 Fragment,因此请注意只调用一次 API。您需要遵循以下准则:

  • 如果 Activity 调用了 API,请勿再从该 Activity 内的任何 Fragment 中调用 API。
  • 如果 Activity 未调用 API,且您需要改用 Fragment 来调用 API,那么请确保只有一个 Fragment 调用 API 且只调用一次。
开始和结束

下面的示例使用公开内容。

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

下面的示例使用个人内容。

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

下一步:测试您的实现