From 6b26ad26acba5ac159bfc99f1d14965fe7b111ea Mon Sep 17 00:00:00 2001 From: huyufei Date: Tue, 19 Mar 2024 15:54:15 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=20GuruConsent=20?= =?UTF-8?q?=E9=80=82=E9=85=8D=E9=80=BB=E8=BE=91=E5=92=8C=20callback=20?= =?UTF-8?q?=E7=9A=84=E9=80=82=E9=85=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # Runtime/GuruConsent/Runtime/Script/Consent/GuruConsent.cs --- .../Runtime/Script/Consent/GuruConsent.cs | 46 ++++++++----------- .../Runtime/Common/GuruSDKCallback.cs | 14 ++++++ 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/Runtime/GuruConsent/Runtime/Script/Consent/GuruConsent.cs b/Runtime/GuruConsent/Runtime/Script/Consent/GuruConsent.cs index 1c42e9c..a5e5a19 100644 --- a/Runtime/GuruConsent/Runtime/Script/Consent/GuruConsent.cs +++ b/Runtime/GuruConsent/Runtime/Script/Consent/GuruConsent.cs @@ -76,10 +76,13 @@ namespace Guru /// 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,37 +90,24 @@ namespace Guru var data = JsonConvert.DeserializeObject(msg); if (data != null && data.TryGetValue("action", out var jAtc)) { - if (jAtc.ToString() == "gdpr") + if (jAtc.ToString() == "gdpr" && data.TryGetValue("data", out var jData)) { - if(data.TryGetValue("data", out var jData)) + if (jData is JObject jObj) { - if (jData is JObject jObj) + string message = ""; + if (jObj.TryGetValue("status", out var jStatus)) { - int status = StatusCode.UNKNOWN; - string message = ""; - if (jObj.TryGetValue("status", out var jStatus)) - { - int.TryParse(jStatus.ToString(), out status); - } - if (jObj.TryGetValue("msg", out var jMsg)) - { - message = jMsg.ToString(); - } - Debug.Log($"{Tag} --- status: {status} msg: {message}"); - GuruSDKCallback.RemoveCallback(OnSDKCallback); - if (onCompleteHandler != null) - { - onCompleteHandler.Invoke(status); - onCompleteHandler = null; - } - return; + int.TryParse(jStatus.ToString(), out status); } + if (jObj.TryGetValue("msg", out var jMsg)) + { + message = jMsg.ToString(); + } + Debug.Log($"{Tag} --- status: {status} msg: {message}"); + 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; + } } /// diff --git a/Runtime/GuruCore/Runtime/Common/GuruSDKCallback.cs b/Runtime/GuruCore/Runtime/Common/GuruSDKCallback.cs index 871f137..6386967 100644 --- a/Runtime/GuruCore/Runtime/Common/GuruSDKCallback.cs +++ b/Runtime/GuruCore/Runtime/Common/GuruSDKCallback.cs @@ -40,6 +40,11 @@ namespace Guru return ins; } + private void SubCallback(Action callback) + { + msgCallback -= callback; + } + /// /// External 回调参数 /// @@ -66,6 +71,15 @@ namespace Guru { Instance.msgCallback -= callback; } + + /// + /// 添加回调 + /// + /// + public static void RemoveCallback(Action callback) + { + Instance.SubCallback(callback); + } } } \ No newline at end of file