using Firebase; using Firebase.Auth; using System; using UnityEngine; using UnityEngine.Android; public class FirebaseInitializer : MonoBehaviour { public Action onFirebaseReady; public static FirebaseInitializer Instance; void Awake() { Instance = this; } // Start is called before the first frame update void Start() { AskForCameraAuthorizationForAndroid(); FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == DependencyStatus.Available) { // Create and hold a reference to your FirebaseApp, // where app is a Firebase.FirebaseApp property of your application class. var app = FirebaseApp.DefaultInstance; Authenticate(); // Set a flag here to indicate whether Firebase is ready to use by your app. } else { Debug.LogError($"Could not resolve all Firebase dependencies: {dependencyStatus}"); } }); } // Update is called once per frame void Authenticate() { FirebaseAuth auth = FirebaseAuth.DefaultInstance; auth.SignInAnonymouslyAsync().ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAnonymouslyAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAnonymouslyAsync encountered an error: " + task.Exception); return; } AuthResult result = task.Result; Debug.Log($"User signed in successfully: {result.User.UserId}"); onFirebaseReady?.Invoke(); }); } private void AskForCameraAuthorizationForAndroid() { if (Permission.HasUserAuthorizedPermission(Permission.Microphone)) { // The user authorized use of the microphone. } else { bool useCallbacks = false; if (!useCallbacks) { // We do not have permission to use the microphone. // Ask for permission or proceed without the functionality enabled. Permission.RequestUserPermission(Permission.Microphone); } else { var callbacks = new PermissionCallbacks(); //callbacks.PermissionDenied += PermissionCallbacks_PermissionDenied; //callbacks.PermissionGranted += PermissionCallbacks_PermissionGranted; //callbacks.PermissionDeniedAndDontAskAgain += PermissionCallbacks_PermissionDeniedAndDontAskAgain; Permission.RequestUserPermission(Permission.Microphone, callbacks); } } } }