Unity 版本 2020.3.22f1,Firebase SDK 9.0.0 dotnet4
我已經匯入了分析和實時資料庫 SDK。分析作業得很好。
關于資料庫,構建一個 Android 應用程式包并上傳到內部測驗或構建一個 APK 并直接上傳到我的手機或為 IOS 構建并上傳到測驗飛行所有 3 個結果都出現錯誤。
這就是我初始化 Firebase 的方式-
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
//init analytics
FirebaseAnalytics.SetAnalyticsCollectionEnabled(true);
DatabaseReference = FirebaseDatabase.DefaultInstance.RootReference;
Debug.Log(JsonConvert.SerializeObject(DatabaseReference.Database.App.Options));
});
這就是我使用資料庫的方式(增加特定級別的 win 欄位) -
DatabaseReference.Child("Levels").Child($"Level{levelNum}").Child("Wins").RunTransaction((mutableData) =>
{
mutableData.Value = Int32.Parse(mutableData.Value.ToString()) 1;
return TransactionResult.Success(mutableData);
});
參考上面DatabaseRefrence初始化中的日志,在編輯器中可以看到所有的配置屬性——databaseUrl、apikey、AppId等...
在我的手機上除錯 APK Options 屬性只包含 databaseUrl。當嘗試對資料庫執行事務時,會拋出錯誤 -
W/Unity: Exception in transaction delegate, aborting transaction
System.NullReferenceException: Object reference not set to an instance of an object.
at ....(Firebase.Database.MutableData mutableData)
到目前為止我嘗試過的事情-
- 我已經添加了我的除錯密鑰庫和谷歌控制臺應用程式完整性的 SHA1/SHA256
- 我已經檢查過,正在生成 XML 檔案,其中包含所有詳細資訊,
streamingAssets并在檔案夾和Assets\Plugins\Android\FirebaseApp.androidlib\res\values\google-services.xml - 我已經嘗試按照此處提到的手動初始化 Firebase 應用程式 - https://stackoverflow.com/a/66874818/7210967,這樣做確實會導致上面的 debug.log 包含所有選項引數,但發生相同的錯誤就好像它實際上并沒有使用它。(我已經嘗試過使用組態檔并完全洗掉它們)。
- 我試過覆寫默認的應用程式實體選項。
我讀過一些帖子說 Proguard 混淆可能會導致 firebase 出錯?找不到與 Unity 相關的任何內容。
如果有人有任何想法,請分享!泰
uj5u.com熱心網友回復:
Firebase 實時資料庫中的事務的作業方式與您預期的有所不同,因為它們會立即使用客戶端對節點當前值的猜測呼叫您的處理程式,該值通常為null.
因此,當您呼叫mutableData.Value代碼時,您會回傳null然后呼叫ToString()它,這會導致您得到錯誤。要解決這個問題,首先檢查是否mutableData.Value是null在呼叫方法之前。
int current = mutableData.Value is null ? 0 : Int32.Parse(mutableData.Value.ToString());
mutableData.Value = current 1;
return TransactionResult.Success(mutableData);
上面可能存在語法錯誤,因為我已經有一段時間沒有撰寫 C# 了。
交易將 SDK 猜測和基于該猜測的新值發送到服務器,然后服務器執行比較和設定操作。如果猜測與資料庫中的實際值不匹配,則服務器拒絕使用當前值的寫入,然后客戶端使用更新的當前猜測再次呼叫您的事務處理程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/489315.html
