2

可以同时安装两个应用程序检查提供程序工厂吗?或者我应该只使用一个用于调试,另一个用于发布?如果是,那么该怎么做?

我指的代码片段:

package pl.matematykagryzie.app

import android.os.Bundle
import android.util.Log

import io.flutter.embedding.android.FlutterActivity

import com.google.firebase.FirebaseApp
import com.google.firebase.appcheck.FirebaseAppCheck
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory
import com.google.firebase.appcheck.safetynet.SafetyNetAppCheckProviderFactory

import com.google.firebase.functions.FirebaseFunctions

class MainActivity: FlutterActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)

        // Initialize firebae app
        FirebaseApp.initializeApp(/*context=*/this)

        val firebaseAppCheck = FirebaseAppCheck.getInstance()
        firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance())

        // Activate app check
        firebaseAppCheck.installAppCheckProviderFactory(
            SafetyNetAppCheckProviderFactory.getInstance())


        val data = hashMapOf(
            "isKotlin" to true
        )

        // Call a function
        FirebaseFunctions
            .getInstance("europe-central2")
            .getHttpsCallable("validateAppCheck")
            .call(data)
            .addOnFailureListener {
                Log.wtf("onCreate", "failure") 
            }
            .addOnSuccessListener {
                Log.wtf("onCreate", "success") 
            }
    }
}

请注意,我不是 kotlin 也不是 android 开发人员。

我正在开发一个颤振应用程序,最近添加了 Firebase 应用程序检查,这给我带来了很多麻烦,我正在努力解决它们。

我正在尝试缩小我遇到的问题的范围。

4

1 回答 1

1

您应该只安装一个工厂,而不是两个工厂,因为您安装的最后一个工厂会覆盖任何以前的工厂。

您必须根据构建变体安装不同的工厂:

  • 利用if(BuildConfig.DEBUG) installOne() else installAnother()
  • 将安装逻辑放在不同的源集中,即src/release/java/AppCheckInitialization.kt两者src/debug/java/AppCheckInitialization.ktfun initializeAppCheck()可以从您的活动中调用。根据您构建的变体,应用程序将使用相应版本的initializeAppCheck().
于 2021-08-12T13:27:12.647 回答