我想在這里輸入影像描述這個引數。我正在嘗試使用此代碼執行此操作。但它只適用于電腦。
這是我所有的代碼,但我只需要從遠程配置中獲取引數并初始化 firebase 分析。
我無法弄清楚問題出在哪里,因為關于統一的指南很少。我正在嘗試這樣做已經 3 天,請幫忙。
using UnityEngine;
using Firebase.RemoteConfig;
using System;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using System.Threading.Tasks;
using Firebase.Crashlytics;
using Firebase.Analytics;
using Photon.Pun;
using TMPro;
using UnityEngine.UI;
public class GameOpening : MonoBehaviour
{
[SerializeField] private Text _versionText;
[SerializeField] private RemoteConfigSavings _remoteConfigSavings;
private Firebase.DependencyStatus dependencyStatus = Firebase.DependencyStatus.UnavailableOther;
private int _version = -1;
private int _receivedVersion
{
get => _version;
set
{
_version = value;
UpdateConfig();
}
}
private void Start()
{
AwakeFireBase();
Invoke("ToNextScene", 1);
}
private void ToNextScene()
{
if(_version!=-1) PhotonNetwork.LoadLevel(1);
else Invoke("ToNextScene", 1);
}
private void AwakeFireBase()
{
if(Debug.isDebugBuild)
{
var configSettings = new ConfigSettings();
configSettings.MinimumFetchInternalInMilliseconds = 0;
FirebaseRemoteConfig.DefaultInstance.SetConfigSettingsAsync(configSettings);
}
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
{
FirebaseAnalytics.SetAnalyticsCollectionEnabled(true);
dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available)
{
//InitializeFirebase();
GetGameVersion();
}
else
{
Debug.LogError("Could not resolve all Firebase dependencies: " dependencyStatus);
}
});
}
private void InitializeFirebase()
{
var defaults = new System.Collections.Generic.Dictionary<string, object>
{
{"someThing", "asdf"},
{"some2", 12323}
};
FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults).ContinueWith(task=> { GetGameVersion(); });
Debug.Log("Remote config ready!");
}
private void GetGameVersion()
{
var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
remoteConfig.FetchAndActivateAsync().ContinueWith(task =>
{
IDictionary<string, ConfigValue> values = remoteConfig.AllValues;
values.TryGetValue("VERSION", out ConfigValue objValue);
int version = Convert.ToInt32(objValue.StringValue);
_receivedVersion = version;
_versionText.text = version.ToString();
});
}
private void UpdateConfig()
{
_remoteConfigSavings.Version = _version;
_remoteConfigSavings.SaveObject();
}
}
uj5u.com熱心網友回復:
在開始之前,我們需要清理我們的代碼。
我洗掉了除與FirebaseRemoteConfig相關的部分之外的所有內容。另外,我洗掉了CheckAndFixDependenciesAsync()
和SetDefaultsAsync()
部分。
在上面介紹的代碼清理之后,剩下的就是GetGameVersion()
方法。現在,讓我們找出問題所在。
問題
您應該完全理解FirebaseRemoteConfig API頁面FetchAndActivateAsync()
中的描述。
FetchAndActivateAsync()
如果自上次從 Firebase 遠程配置后端獲取以來經過的時間超過默認的最小獲取間隔,則從后端獲取配置。
盡管此頁面上未列出,但默認情況下,最小獲取間隔為12 小時。
我們將那部分更改為,FetchAsync(TimeSpan.Zero)
因為我們想在開發時檢查值是否實時更新。
using UnityEngine;
using System;
using Firebase.Extensions;
public class GameOpening : MonoBehaviour
{
private void Start()
{
GetGameVersion();
}
private static void GetGameVersion()
{
var remoteConfig = Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance;
var fetchTask = remoteConfig.FetchAsync(TimeSpan.Zero)
.ContinueWithOnMainThread(async task =>
{
await Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.ActivateAsync();
var values = remoteConfig.AllValues;
values.TryGetValue("VERSION", out var configValue);
Debug.Log(configValue.StringValue);
});
}
}
看看你為什么使用ActivateAsync()
. 我們使用async await是有原因的。
注意:這實際上并沒有應用資料或使其可訪問,它只是檢索并快取它。要接受和訪問新檢索到的值,您必須呼叫
ActivateAsync()
. 請注意,此函式是異步的,通常需要一段未指定的時間才能完成。
所有問題都已解決。我還在Android上檢查過它,它作業正常。(基于三星 Galaxy 10 5G)(使用 LogCat)
希望你的問題得到解決:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475803.html
上一篇:如何讓游戲在策略之前等待?