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

deeplink
胡宇飞 2024-03-19 15:54:15 +08:00
parent 67d0896424
commit 369b90d766
2 changed files with 49 additions and 10 deletions

View File

@ -4,6 +4,7 @@ namespace Guru
using System; using System;
using System.Collections; using System.Collections;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using UnityEngine; using UnityEngine;
/// <summary> /// <summary>
@ -74,27 +75,51 @@ namespace Guru
/// <param name="msg"></param> /// <param name="msg"></param>
private static void OnSDKCallback(string msg) private static void OnSDKCallback(string msg)
{ {
GuruSDKCallback.RemoveCallback(OnSDKCallback); // 移除回调
//-------- Fetch DMA status and report ----------- //-------- Fetch DMA status and report -----------
var value = Agent?.GetPurposesValue() ?? ""; var value = Agent?.GetPurposesValue() ?? "";
GoogleDMAHelper.SetDMAStatus(value, _dmaMapRule, _enableCountryCheck); GoogleDMAHelper.SetDMAStatus(value, _dmaMapRule, _enableCountryCheck);
int status = StatusCode.UNKNOWN;
//------- message send to unity ---------- //------- message send to unity ----------
Debug.Log($"{Tag} get callback msg:\n{msg}"); Debug.Log($"{Tag} get callback msg:\n{msg}");
try
var result = JsonConvert.DeserializeObject<ConsentResult>(msg);
if (result != null && result.action == "gdpr")
{ {
if (result.data != null) var data = JsonConvert.DeserializeObject<JObject>(msg);
if (data != null && data.TryGetValue("action", out var jAtc))
{ {
Debug.Log($"{Tag} --- status: {result.data.status} msg: {result.data.msg}"); if (jAtc.ToString() == "gdpr" && data.TryGetValue("data", out var jData))
onCompleteHandler?.Invoke(result.data.status); {
return; if (jData is JObject jObj)
{
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}");
onCompleteHandler?.Invoke(status);
return;
}
}
} }
} }
catch (Exception ex)
{
Analytics.LogCrashlytics(ex);
}
Debug.LogError($"{Tag} Parse callback Error"); Debug.LogError($"{Tag} Parse callback Error");
onCompleteHandler?.Invoke(StatusCode.UNKNOWN); if (onCompleteHandler != null)
{
onCompleteHandler.Invoke(status);
onCompleteHandler = null;
}
} }
/// <summary> /// <summary>

View File

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