This guide describes how to enable in-app feedback using the optional Firebase App Distribution Android SDK, so that your testers can submit feedback (including screenshots) directly in the app.
Before you begin
If you haven't already, add Firebase to your Android project.
Step 1: Enable the App Distribution Tester API
Open the Google Cloud console and select your Firebase project.
Under the Firebase App Testers API, click Enable.
Step 2: Add App Distribution to your app
The App Distribution Android SDK consists of two libraries:
firebase-appdistribution-api
: The API-only library, which you can include in all build variants.firebase-appdistribution
: The full SDK implementation (optional).
The API-only library lets your code make calls to the SDK. The calls have no effect if the full SDK implementation is not present.
Declare the dependency for the App Distribution Android SDK in your module (app-level) Gradle file (usually
<project>/<app-module>/build.gradle.kts
or<project>/<app-module>/build.gradle
).To avoid including the full SDK implementation's self-update functionality in your Google Play builds, identify the build variants, including build types or product flavors that you will distribute through App Distribution.
Declare the dependency for the App Distribution Android SDK in your module (app-level) Gradle file (usually
app/build.gradle
). Only add the full SDK implementation to variants that are intended exclusively for pre-release testing:Kotlin
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") }
Step 3: Configure in-app feedback
To collect feedback from your testers, use one of the following triggers to enable testers to initiate feedback:
Built-in notification trigger: The App Distribution Android SDK can display an ongoing notification that the tester can tap from anywhere in the app. Use this trigger if you want to get started more quickly and you don't need to customize how your testers provide feedback.
Custom trigger: You can provide your own trigger mechanism, like tapping a button or menu item in your app or shaking the device.
When you use either of these triggers and the tester submits feedback, the Android SDK performs the following actions:
Captures a screenshot of the app's current activity.
Runs checks to ensure the tester enabled the SDK's testing features. If the testing features are not enabled, the Android SDK prompts the tester to sign in to App Distribution with their Google account.
Starts a full-screen activity that lets the tester write and submit their feedback.
Option 1: Notification trigger
Use showFeedbackNotification()
to display a persistent or
ongoing
notification on the tester's device that they can tap to initiate feedback.
When you configure the notification, you need to provide some text that will
be displayed to the tester before they submit feedback, and a level of
interruption for the notification (corresponding to the notification channel's importance). If you want to
provide notice to your testers about the collection and processing of their
feedback data, you can use the text to provide such a notice.
When you use showFeedbackNotification()
and when the app goes to the
background, the notification is hidden. If you want to explicitly hide
the notification, use cancelFeedbackNotification()
. We recommend that you
put showFeedbackNotification()
in your main activity's onCreate()
.
Kotlin
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);
}
}
Option 2: Custom trigger
Use the startFeedback()
method to initiate feedback using a mechanism of your
choice. For example, to trigger feedback you might want to add a
"Send feedback" menu item to your app's action menu, or let your testers
shake their device
or take a screenshot.
When you trigger feedback, provide some text that will be shown to the tester
before they submit feedback. If you want to provide a notice to your testers
about collection and processing of their feedback data, you can use this text to
provide such a notice.
Kotlin
Firebase.appDistribution.startFeedback(R.string.feedbackMessage)
Java
FirebaseAppDistribution.getInstance().startFeedback(R.string.feedbackMessage);
Step 4: Build and test your implementation
Local testing
To test your implementation without having to distribute the app first, follow these steps:
Enable dev mode on your local device:
adb shell setprop debug.firebase.appdistro.devmode true
Build your app as a pre-release variant that includes the full App Distribution libraries, and test that you can trigger feedback using the mechanism implemented in Step 3: Configure in-app feedback. Feedback is not submitted when in dev mode.
After testing, you can disable dev mode on your device:
adb shell setprop debug.firebase.appdistro.devmode false
End-to-end testing
To test that your app can send feedback, build your app as a pre-release variant that includes the full App Distribution libraries, and test your implementation following these steps:
Upload a new app release to App Distribution.
Distribute the app release to an account you have permission to access.
Download the app through App Distribution's web or Android tester app.
Trigger feedback using the mechanism implemented in Step 3: Configure in-app feedback.
Ensure you're signed in with the same account to which you distributed the app release, and submit feedback.
View your feedback in the new release's card in the Firebase console.
To learn how to resolve common issues, like testers unable to start feedback in the app, see Enabling testing features with the SDK.
Step 5: Manage tester feedback
After you enable your testers to send feedback, you can use the following tools to review and act on that feedback:
View and delete feedback in the Firebase console
You can review and delete user feedback, including screenshots, by opening the Tester feedback tab under a specific release in the Firebase console. User feedback is organized by release so you can confirm the version to which the feedback applies.
After reviewing user feedback, you can delete that feedback by clicking the Delete feedback button. The deleted feedback is removed from your release.
Receive email alerts for new feedback
To proactively learn about new tester feedback, you can receive email alerts when a tester submits feedback. The email alert includes the written feedback your tester provided and a link to any screenshots they submitted.
To receive App Distribution email alerts via this default mechanism, you must have
the firebase.projects.update
permission. The following roles include this
required permission by default: Firebase Admin
or project Owner or Editor.
By default, every project member who has the required permissions to receive email alerts will receive an email when a new feedback report is submitted. Project members can individually opt out of these alerts.
To disable email alerts, see Receive Firebase alerts.
Send new feedback to third-party tools
You can also send App Distribution alerts to your team's preferred notification channel using Cloud Functions for Firebase. For example, you can write a function that captures an alert event for new in-app feedback and posts the alert information to a third-party service like Discord, Slack, or Jira.
To set up advanced alerting capabilities using Cloud Functions for Firebase, follow these steps:
Set up Cloud Functions for Firebase, which includes the following tasks:
Download Node.js and npm.
Install and sign into the Firebase CLI.
Initialize Cloud Functions for Firebase using the Firebase CLI.
Write and deploy a function that captures an in-app feedback alert event from App Distribution and handles the event payload (for example, posts the alert information in a message on Discord).
To see an example function that shows you how to send new feedback to Jira, refer to this sample.
To learn about all of the alert events that you can capture, see the reference documentation for App Distribution alerts.