update: 更新 GuruConsent 适配逻辑和 callback 的适配逻辑

# Conflicts:
#	Runtime/GuruConsent/Runtime/Script/Consent/GuruConsent.cs
deeplink
胡宇飞 2024-03-19 15:54:15 +08:00
parent cef528e5dc
commit 6b26ad26ac
2 changed files with 34 additions and 26 deletions

View File

@ -76,10 +76,13 @@ namespace Guru
/// <param name="msg"></param>
private static void OnSDKCallback(string msg)
{
GuruSDKCallback.RemoveCallback(OnSDKCallback); // 移除回调
//-------- Fetch DMA status and report -----------
var value = Agent?.GetPurposesValue() ?? "";
GoogleDMAHelper.SetDMAStatus(value, _dmaMapRule, _enableCountryCheck);
int status = StatusCode.UNKNOWN;
//------- message send to unity ----------
Debug.Log($"{Tag} get callback msg:\n{msg}");
try
@ -87,13 +90,10 @@ namespace Guru
var data = JsonConvert.DeserializeObject<JObject>(msg);
if (data != null && data.TryGetValue("action", out var jAtc))
{
if (jAtc.ToString() == "gdpr")
{
if(data.TryGetValue("data", out var jData))
if (jAtc.ToString() == "gdpr" && data.TryGetValue("data", out var jData))
{
if (jData is JObject jObj)
{
int status = StatusCode.UNKNOWN;
string message = "";
if (jObj.TryGetValue("status", out var jStatus))
{
@ -104,21 +104,11 @@ namespace Guru
message = jMsg.ToString();
}
Debug.Log($"{Tag} --- status: {status} msg: {message}");
GuruSDKCallback.RemoveCallback(OnSDKCallback);
if (onCompleteHandler != null)
{
onCompleteHandler.Invoke(status);
onCompleteHandler = null;
}
onCompleteHandler?.Invoke(status);
return;
}
}
}
else
{
return;
}
}
}
catch (Exception ex)
{
@ -126,7 +116,11 @@ namespace Guru
}
Debug.LogError($"{Tag} Parse callback Error");
onCompleteHandler?.Invoke(StatusCode.UNKNOWN);
if (onCompleteHandler != null)
{
onCompleteHandler.Invoke(status);
onCompleteHandler = null;
}
}
/// <summary>

View File

@ -40,6 +40,11 @@ namespace Guru
return ins;
}
private void SubCallback(Action<string> callback)
{
msgCallback -= callback;
}
/// <summary>
/// External 回调参数
/// </summary>
@ -67,5 +72,14 @@ namespace Guru
Instance.msgCallback -= callback;
}
/// <summary>
/// 添加回调
/// </summary>
/// <param name="callback"></param>
public static void RemoveCallback(Action<string> callback)
{
Instance.SubCallback(callback);
}
}
}