'How to make SafetyNet/Firebase AppCheck work in Google Play Pre-Launch Reports

I'm using Firebase AppCheck to authenticate that calls to my API are indeed coming from my app.

My issue is that ever since I enabled AppCheck, I can only get a token on legit devices or via debug tokens for the emulator. In a way this makes sense, but being unable to take advantage of Pre-Launch Reports is a pretty big caveat since they come in handy to ensure I don't ship a bugged version to my testers. Neither Pre-Launch Reports nor the Firebase Test Lab seem to have a way to pass SafetyNet.

Are all apps that use SafetyNet just unable to use Pre-Launch Reports or the Firebase Test Lab? That seems rather implausible to me, which is why I assume I'm missing something here.

Relevant code:

app/build.gradle:

dependencies {
    implementation platform('com.google.firebase:firebase-bom:29.3.1')
    implementation 'com.google.firebase:firebase-crashlytics-ktx'
    implementation 'com.google.firebase:firebase-analytics-ktx'
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0-beta06'
    implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta06'

    // ...
}

In the onCreate() method of my Application class:

// ...

FirebaseApp.initializeApp(this)

val appCheck = FirebaseAppCheck.getInstance()

appCheck.installAppCheckProviderFactory(
    if (!BuildConfig.DEBUG) {
        SafetyNetAppCheckProviderFactory.getInstance()
    } else {
        Log.i(javaClass.name, "Using debug version of AppCheck.")
        DebugAppCheckProviderFactory.getInstance()
    }
)

// ...


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source