update: 更新 GuruConsent 适配逻辑和 callback 的适配逻辑
parent
67d0896424
commit
369b90d766
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue