收集测试人员的反馈

本指南介绍如何通过可选用的 Firebase App Distribution Android SDK 来实现应用内反馈功能,以便测试人员可以直接在应用中提交反馈(包括屏幕截图)。

准备工作

将 Firebase 添加到您的 Android 项目(如果尚未添加)。

第 1 步:启用 App Distribution Tester API

  1. 打开 Google Cloud 控制台,然后选择您的 Firebase 项目。

  2. 在 Firebase App Tester API 下,点击启用

第 2 步:将 App Distribution 添加到您的应用

App Distribution Android SDK 由两个库构成:

  • firebase-appdistribution-api:仅包含 API 的库,可添加到所有 build 变体中。
  • firebase-appdistribution:完整的 SDK 实现(可选装)。

通过仅限 API 的库,您的代码可以调用 SDK。但如果未安装该完整的 SDK 实现,这些调用将不起作用。

  1. 模块(应用级)Gradle 文件(通常为 <project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle)中,声明 App Distribution Android SDK 的依赖项。

  2. 为避免在您的 Google Play build 中包含该完整 SDK 实现的自行更新功能,请指明要通过 App Distribution 分发的 build 变体,包括 build 类型产品变种

  3. 模块(应用级)Gradle 文件(通常为 app/build.gradle)中,声明 App Distribution Android SDK 的依赖项。仅将完整的 SDK 实现添加到专门用于预发布测试的变体:

    Kotlin+KTX

    dependencies {
        // ADD the API-only library to all variants
        implementation("com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta14")
    
        // ADD the full SDK implementation to the "beta" variant only (example)
        betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta14")
    }
    

    Java

    dependencies {
        // ADD the API-only library to all variants
        implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta14")
    
        // ADD the full SDK implementation to the "beta" variant only (example)
        betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta14")
    }
    

第 3 步:配置应用内反馈

如需从测试人员那里收集反馈,您可以使用下面两种触发器中的一种,以便测试人员能够发起反馈:

  • 内置通知触发器App Distribution Android SDK 可以持续显示一条通知,方便测试人员从应用中的任何位置点按该通知。如果您希望更快上手,并且不需要自定义测试人员提供反馈的方式,则可以使用此触发器。

  • 自定义触发器:您可以提供自己的触发器机制,例如在应用中点按某个按钮或菜单项,亦或摇晃设备。

当您使用上述任一种触发器并且有测试人员提交反馈时,Android SDK 会执行以下操作:

  1. 截取应用当前 activity 的屏幕截图。

  2. 运行检查,以确保测试人员启用了 SDK 的测试功能。如果检测到未启用测试功能,Android SDK 会提示测试人员使用其 Google 账号登录 App Distribution

  3. 启动全屏显示 activity,以方便测试人员撰写和提交反馈。

方案 1:通知触发器

使用 showFeedbackNotification() 在测试人员的设备上显示一则常驻或持续性通知,以方便测试人员随时点按该通知来发起反馈。配置通知时,您需要提供一些文字,以在测试人员提交反馈之前向他们显示这些文字;此外,您还需要指定该通知的干扰级别(与通知渠道的重要性级别相对应)。例如,如果您想向测试人员提供其反馈数据的收集和处理方式相关的信息,便可以使用该文字内容提供此类信息。

如果在您使用 showFeedbackNotification() 时应用转到后台,该通知会隐藏起来。如果要明确隐藏通知,可以使用 cancelFeedbackNotification()。我们建议您将 showFeedbackNotification() 加入主 activity 的 onCreate() 方法。

Kotlin+KTX

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Firebase.appDistribution.showFeedbackNotification(
            // Text providing notice to your testers about collection and
            // processing of their feedback data
            R.string.additionalFormText,
            // The level of interruption for the notification
            InterruptionLevel.HIGH)
    }
}

Java

public class MainActivity extends AppCompatActivity {
    FirebaseAppDistribution firebaseAppDistribution =
        FirebaseAppDistribution.getInstance();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        firebaseAppDistribution.showFeedbackNotification(
            // Text providing notice to your testers about collection and
            // processing of their feedback data
            R.string.additionalFormText,
            // The level of interruption for the notification
            InterruptionLevel.HIGH);
    }
}

方案 2:自定义触发器

您可以使用 startFeedback() 方法根据自己的机制发起反馈。例如,您可以向应用的操作菜单添加一个“发送反馈”菜单项,让测试人员通过点按该菜单项来触发反馈,也可以让测试人员通过摇晃设备截取屏幕截图来发起反馈。您可以提供一些文字内容,以在测试人员触发反馈并准备提交反馈之前向他们显示这些文字。例如,如果您想向测试人员提供其反馈数据的收集和处理方式相关的信息,便可以使用该文字内容提供此类信息。

Kotlin+KTX

Firebase.appDistribution.startFeedback(R.string.feedbackMessage)

Java

FirebaseAppDistribution.getInstance().startFeedback(R.string.feedbackMessage);

第 4 步:构建并测试您的实现

本地测试

若要仅测试实现而不事先分发应用,您可以采用以下步骤:

  1. 在您的本地设备上启用开发者模式:

    adb shell setprop debug.firebase.appdistro.devmode true
    
  2. 将您的应用构建为包含完整 App Distribution 库的预发布变体,并测试是否可以使用在第 3 步:配置应用内反馈部分实现的机制触发反馈。在开发者模式下,系统不会提交反馈。

  3. 测试完成后,您可以在设备上停用开发者模式:

    adb shell setprop debug.firebase.appdistro.devmode false
    

端到端测试

如需测试您的应用是否可以发送反馈,请将应用构建为包含完整 App Distribution 库的预发布变体,然后按照以下步骤测试您的实现:

  1. 将新的应用版本上传到 App Distribution

  2. 将该应用版本分发给一个您有权访问的账号。

  3. 通过 App Distribution 的 Web 版或 Android 版测试人员应用下载该应用。

  4. 使用在第 3 步:配置应用内反馈部分实现的机制触发反馈。

  5. 请务必使用您分发应用版本时所用的账号登录,并提交反馈。

  6. 您可以在 Firebase 控制台的新版本卡片中查看反馈。

如需了解如何解决一些常见问题(例如测试人员无法在应用中发起反馈),请参阅使用 SDK 启用测试功能

第 5 步:管理测试人员反馈

在测试人员能够发送反馈后,您便可以使用以下工具查看这些反馈并采取相应措施:

Firebase 控制台中查看和删除反馈

您可以在 Firebase 控制台中打开针对某一特定版本的测试人员反馈标签页,以查看和删除用户反馈,包括屏幕截图。用户反馈是按各个版本组织在一起的,因此您可以确定特定反馈对应的是哪一个版本。

查看用户反馈后,您可以点击删除反馈按钮删除相应反馈。已删除的反馈会从相应版本中移除。

有新反馈时接收电子邮件提醒

如需在有测试人员提交新反馈时主动了解相关情况,您可以对系统进行相应配置,以在有测试人员提交反馈时收到电子邮件提醒。电子邮件提醒将包含测试人员提供的书面反馈,以及可定向至他们所提交的屏幕截图的链接。

如需通过此默认机制接收 App Distribution 电子邮件提醒,您必须拥有 firebase.projects.update 权限。以下角色默认包含这项必需权限:Firebase Admin,或者项目的 Owner 或 Editor

默认情况下,当有新反馈报告提交时,拥有接收电子邮件提醒所需权限的每个项目成员都将收到一封电子邮件。项目成员可以单独停用这些提醒。

如需停用电子邮件提醒,请参阅接收 Firebase 提醒

向第三方工具发送新反馈

您还可以使用 Cloud Functions for FirebaseApp Distribution 提醒发送到团队的首选通知渠道。例如,您可以编写一个函数来捕获有关新应用内反馈的提醒事件,并将提醒信息发布到第三方服务(如 Discord、Slack 或 Jira)。

如需使用 Cloud Functions for Firebase 设置高级提醒功能,请按以下步骤操作:

  1. 设置 Cloud Functions for Firebase,您需完成以下任务:

    1. 下载 Node.js 和 npm。

    2. 安装并登录 Firebase CLI。

    3. 使用 Firebase CLI 初始化 Cloud Functions for Firebase

  2. 编写并部署一个函数,该函数会从 App Distribution 捕获应用内反馈提醒事件并处理事件载荷(例如,在 Discord 上的消息中发布提醒信息)。

如需查看展示如何向 Jira 发送新反馈的示例函数,请参阅此示例

如需了解您可以捕获的所有提醒事件,请参阅 App Distribution 提醒的参考文档。