如何解决iOS 上的 Firebase 远程配置 ArgumentOutOfRangeException
在 iOS 上,Firebase 远程配置抛出 ArgumentOutOfRangeException:
Exception: ArgumentOutOfRangeException: Value to add was out of range.
Parameter name: value
System.DateTime.TimeToTicks (System.Int32 hour,System.Int32 minute,System.Int32 second) (at <00000000000000000000000000000000>:0)
Rebar.GameData.RemoteConfigFetcher+<>c__DisplayClass20_0.<Refresh>b__1 () (at <00000000000000000000000000000000>:0)
System.Threading.ContextCallback.Invoke (System.Object state) (at <00000000000000000000000000000000>:0)
System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext,System.Threading.ContextCallback callback,System.Object state,System.Boolean preserveSyncCtx) (at <00000000000000000000000000000000>:0)
System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () (at <00000000000000000000000000000000>:0)
System.Action.Invoke () (at <00000000000000000000000000000000>:0)
System.Threading.ContextCallback.Invoke (System.Object state) (at <00000000000000000000000000000000>:0)
System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback,System.Threading.Tasks.Task& currentTask) (at <00000000000000000000000000000000>:0)
System.Threading.Tasks.Task.FinishContinuations () (at <00000000000000000000000000000000>:0)
System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) (at <00000000000000000000000000000000>:0)
System.Threading.Tasks.TaskCompletionSource`1[TResult].TrySetResult (TResult result) (at <00000000000000000000000000000000>:0)
System.Threading.Tasks.TaskCompletionSource`1[TResult].SetResult (TResult result) (at <00000000000000000000000000000000>:0)
Firebase.FutureVoid+<GetTask>c__AnonStorey0.<>m__0 () (at <00000000000000000000000000000000>:0)
Firebase.FutureVoid+Action.Invoke () (at <00000000000000000000000000000000>:0)
Firebase.FutureVoid.SWIG_CompletionDispatcher (System.Int32 key) (at <00000000000000000000000000000000>:0)
Firebase.AppUtil.PollCallbacks () (at <00000000000000000000000000000000>:0)
Firebase.Platform.FirebaseHandler.Update () (at <00000000000000000000000000000000>:0)
Rebar.GameData.<>c__DisplayClass20_0:<Refresh>b__1()
System.Threading.Tasks.TaskCompletionSource`1:SetResult(TResult)
Firebase.<GetTask>c__AnonStorey0:<>m__0()
Firebase.Action:Invoke()
Firebase.FutureVoid:SWIG_CompletionDispatcher(Int32)
Firebase.AppUtil:PollCallbacks()
Firebase.Platform.FirebaseHandler:Update()
我不确定此错误可能来自何处或可能导致它的原因。前几天还在用。
我们在 Unity 2019.4.17f1 中运行 Firebase 7.2.0。问题似乎是 iOS 特有的。
相关代码段:
private async Task<Dictionary<string,object> FetchAndActivateAsync(){
_fetchState = FetchState.Fetching;
await _remoteConfig.FetchAsync(TimeSpan.Zero);
_fetchState = FetchState.Applying;
if(_remoteConfig.Info.LastFetchStatus == LastFetchStatus.Failure){
_fetchState = FetchState.Fail;
return null;
}
await _remoteConfig.ActivateAsync();
var configs = new Dictionary<string,object>();
foreach(string key in _remoteConfig.Keys){
var configValue = _remoteConfig.GetValue(key);
AddConfig(key,configValue,configs); //just does some sorting and translating
}
_fetchState = FetchState.Success;
return configs;
}
解决方法
似乎是在请求没有受到限制时访问 RemoteConfig.ConfigInfo.ThrottledEndTime
的调试日志造成的。分解日志并首先检查 LastFetchFailureReason
,似乎已解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。