Unity3D [Android] Firebase Remote Config Error
Есть скрипт, который сверяет версию клиента с сервером, на пк код работает отлично, но при сборке на Android данные попросту не приходят. Сам код:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class RemoteConfig : MonoBehaviour
{
public GameObject nextbutton;
public GameObject basicbutton;
[SerializeField]
private double actualVersion;
private string stringVersion;
[SerializeField]
private double appVersion;
Firebase.DependencyStatus dependencyStatus = Firebase.DependencyStatus.UnavailableOther;
// Use this for initialization
void Start() {
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available) {
InitializeFirebase();
} else {
Debug.LogError(
"Could not resolve all Firebase dependencies: " + dependencyStatus);
}
});
}
void InitializeFirebase() {
System.Collections.Generic.Dictionary<string, object> defaults =
new System.Collections.Generic.Dictionary<string, object>();
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);
Firebase.RemoteConfig.FirebaseRemoteConfig.SetDefaults(defaults);
Debug.Log("Remote config ready!");
FetchFireBase();
}
public void FetchFireBase() {
FetchDataAsync();
}
public void ShowData() {
Debug.Log("Server version: " + Firebase.RemoteConfig.FirebaseRemoteConfig.GetValue("version").StringValue);
Debug.Log("Client version: " + appVersion);
stringVersion = Firebase.RemoteConfig.FirebaseRemoteConfig.GetValue("version").StringValue;
double.TryParse(stringVersion, out actualVersion);
if (actualVersion > appVersion)
{
Debug.Log("Version: ERROR!");
basicbutton.SetActive(false);
nextbutton.SetActive(true);
}
else
{
Debug.Log("Version: OK!");
SceneManager.LoadScene("Login");
}
}
public void OnButtonExitPressed()
{
Application.Quit();
}
public Task FetchDataAsync() {
Debug.Log("Fetching data...");
System.Threading.Tasks.Task fetchTask = Firebase.RemoteConfig.FirebaseRemoteConfig.FetchAsync(
TimeSpan.Zero);
return fetchTask.ContinueWith(FetchComplete);
}
void FetchComplete(Task fetchTask) {
if (fetchTask.IsCanceled) {
Debug.Log("Fetch canceled.");
} else if (fetchTask.IsFaulted) {
Debug.Log("Fetch encountered an error.");
} else if (fetchTask.IsCompleted) {
Debug.Log("Fetch completed successfully!");
}
var info = Firebase.RemoteConfig.FirebaseRemoteConfig.Info;
switch (info.LastFetchStatus) {
case Firebase.RemoteConfig.LastFetchStatus.Success:
Firebase.RemoteConfig.FirebaseRemoteConfig.ActivateFetched();
Debug.Log(String.Format("Remote data loaded and ready (last fetch time {0}).",
info.FetchTime));
break;
case Firebase.RemoteConfig.LastFetchStatus.Failure:
switch (info.LastFetchFailureReason) {
case Firebase.RemoteConfig.FetchFailureReason.Error:
Debug.Log("Fetch failed for unknown reason");
break;
case Firebase.RemoteConfig.FetchFailureReason.Throttled:
Debug.Log("Fetch throttled until " + info.ThrottledEndTime);
break;
}
break;
case Firebase.RemoteConfig.LastFetchStatus.Pending:
Debug.Log("Latest Fetch call still pending.");
break;
}
}
}
Ответы (1 шт):
Автор решения: Andrii Kniaziev
→ Ссылка
Проблема решилась отладкой. На пк после целого числа ставилась запятая, а в андроиде точка. Соответственно поэтому и не могли версии сходиться.