簡體   English   中英

Firebase實時數據庫事件未在APK中觸發,但在編輯器中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM