[英]Firebase realtime DB events not triggered in APK, but are in editor
我構建了一個Unity游戲,需要監聽數據庫對象的更新。 當我在Unity編輯器中運行游戲時 - 觸發實時數據庫更改事件並且游戲會做出相應的反應。 但是,當我發布到我的Android設備時,這些事件似乎沒有注冊。
當我檢查Unity日志時,我看到的錯誤是:
InitializationException:Firebase模塊初始化失敗:邀請(缺少依賴項),消息傳遞(缺少依賴項),remote_config(缺少依賴項)
雖然我顯然已經導入了這些包。
有什么想法嗎?
firebaseReference.GetValueAsync().ContinueWith(task => {
if (task.IsFaulted) {
// Handle the error...
print ("failed watchers");
}
else if (task.IsCompleted) {
DataSnapshot snapshot = task.Result;
// Do something with snapshot...
print ("set watchers");
}
});
firebaseReference.ChildChanged += HandleChildChanged;
此錯誤與Google服務有關; 你有兩個解決方案(我只會發布與消息相關的信息,這是我用過的唯一一個):
1)使用Firebase插件檢查依賴項,並向用戶顯示一條消息(該插件為您完成)。
2)嘗試注冊Firebase消息服務,捕獲任何錯誤並靜默失敗(如果是這種情況);
以下是解決方案1的代碼:
PushNotificationManager.cs
using UnityEngine;
using Firebase;
public class PushNotificationManager : MonoBehaviour {
DependencyStatus dependencyStatus = DependencyStatus.UnavailableOther;
public void Start()
{
dependencyStatus = FirebaseApp.CheckDependencies();
if (dependencyStatus != DependencyStatus.Available)
{
FirebaseApp.FixDependenciesAsync().ContinueWith(task =>
{
dependencyStatus = FirebaseApp.CheckDependencies();
if (dependencyStatus == DependencyStatus.Available)
{
InitializeFirebase();
}
else
{
Debug.LogError("Could not resolve all Firebase dependencies: " + dependencyStatus);
}
});
}
else
{
InitializeFirebase();
}
}
protected void InitializeFirebase()
{
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}
public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token)
{
Debug.Log(token.Token);
}
public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e)
{
//Debug.Log("Received a new message from: " + e.Message.From + " / " + e.Message.Data.ToString());
}
}
以下是解決方案2的代碼:
PushNotificationManager.cs
using UnityEngine;
using System;
public class PushNotificationManager : MonoBehaviour {
public void Start()
{
InitializeFirebase();
}
protected void InitializeFirebase()
{
try
{
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}
catch(Exception e)
{
Debug.LogError("Erro no Firebase: "+e);
}
}
// (...)
}
注意 :據我所知,到目前為止還沒有解決方案,所以這只是為了防止您的應用程序崩潰。 更多信息: Bug報告[Firebase-Unity]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.