You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PlumberUltimateAds/Assets/FirebaseManager.cs

87 lines
2.3 KiB
C#

using UnityEngine;
using Firebase;
using Firebase.Messaging;
using System.Threading.Tasks;
public class FirebaseManager : MonoBehaviour
{
private static FirebaseManager _instance;
private static bool _isInitialized = false;
public static FirebaseManager Instance => _instance;
void Awake()
{
// Singleton: keep only one instance across scenes
if (_instance != null)
{
Destroy(gameObject);
return;
}
_instance = this;
DontDestroyOnLoad(gameObject);
}
async void Start()
{
if (_isInitialized) return;
_isInitialized = true;
Debug.Log("Initializing Firebase...");
await InitializeFirebaseAsync();
}
private async Task InitializeFirebaseAsync()
{
var dependencyStatus = await FirebaseApp.CheckAndFixDependenciesAsync();
if (dependencyStatus != DependencyStatus.Available)
{
Debug.LogError($"Firebase dependency error: {dependencyStatus}");
return;
}
Debug.Log("✅ Firebase initialized successfully");
// Register for token and message events
FirebaseMessaging.TokenReceived += OnTokenReceived;
FirebaseMessaging.MessageReceived += OnMessageReceived;
// Get the FCM token manually
var tokenTask = FirebaseMessaging.GetTokenAsync();
await tokenTask;
if (tokenTask.IsCompletedSuccessfully)
{
string token = tokenTask.Result;
Debug.Log("🔥 FCM Token: " + token);
// TODO: Save token to PlayFab here if needed
}
else
{
Debug.LogWarning("❌ Failed to retrieve FCM token");
}
}
private void OnTokenReceived(object sender, TokenReceivedEventArgs token)
{
Debug.Log("📱 Token received from Firebase: " + token.Token);
// Optional: save to PlayFab
}
private void OnMessageReceived(object sender, MessageReceivedEventArgs e)
{
if (e.Message.Notification != null)
{
Debug.Log($"📨 Push Notification Received: {e.Message.Notification.Title} - {e.Message.Notification.Body}");
// Optional: Show in-game popup or route to leaderboard
}
else
{
Debug.Log("📨 Data-only message received.");
}
}
}