mergemilitary/Assets/TKGSDK/NativeSDK/Scripts/Utils/DplusAgent.cs

240 lines
5.1 KiB
C#

//#undef UNITY_EDITOR
using UnityEngine;
using System;
using System.Runtime.InteropServices;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace Touka
{
public partial class Analytics
{
#if UNITY_ANDROID
private static AndroidJavaObject AndroidJavaJsonObject(JSONObject jSONObject)
{
return new AndroidJavaObject("org.json.JSONObject", jSONObject.ToString());
}
private static JSONObject jsonObjectFromJava(AndroidJavaObject androidJavaJsonObject)
{
return (JSONObject)JSONNode.Parse(androidJavaJsonObject.Call<String>("toString"));
}
private static AndroidJavaObject ToJavaObject(object obj)
{
if (obj is int)
{
return new AndroidJavaObject("java.lang.Integer", obj);
}
else if (obj is long)
{
return new AndroidJavaObject("java.lang.Long", obj);
}
else if (obj is float)
{
return new AndroidJavaObject("java.lang.Float", obj);
}
else if (obj is double)
{
return new AndroidJavaObject("java.lang.Double", obj);
}
else if (obj is string)
{
return new AndroidJavaObject("java.lang.String", obj);
}
else if(obj is bool)
{
return new AndroidJavaObject("java.lang.Integer", Convert.ToInt32((bool)obj));
}
else
{
Debug.Log("不支持加入" + obj.GetType()+"类型,此kv对被丢弃");
return null;
}
}
private static AndroidJavaObject ToJavaHashMap(Dictionary<String, object> dic)
{
var hashMap = new AndroidJavaObject("java.util.HashMap");
foreach (var kv in dic)
{
var vauleObj = ToJavaObject(kv.Value);
if (vauleObj != null)
{
hashMap.Call<AndroidJavaObject>("put", kv.Key, vauleObj);
}
}
return hashMap;
}
public static AndroidJavaObject ToJavaHashMap(Dictionary<string, string> dic)
{
var hashMap = new AndroidJavaObject("java.util.HashMap");
foreach (var entry in dic)
{
hashMap.Call<AndroidJavaObject>("put", entry.Key, entry.Value);
}
return hashMap;
}
private static AndroidJavaObject ToJavaList(String[] list)
{
var javaList = new AndroidJavaObject("java.util.ArrayList");
foreach (String str in list)
{
javaList.Call<bool>("add", str);
}
return javaList;
}
#elif UNITY_IPHONE
private static string ToJsonStr(Dictionary<string, object> dict)
{
var builder = new StringBuilder("{");
foreach (KeyValuePair<string, object> kv in dict)
{
if(kv.Value is string)
{
builder.AppendFormat("\"{0}\":\"{1}\",", kv.Key, kv.Value);
}
else if(kv.Value is float || kv.Value is double|| kv.Value is int || kv.Value is long)
{
builder.AppendFormat("\"{0}\":{1},", kv.Key, kv.Value.ToString());
}
else if( kv.Value is bool)
{
builder.AppendFormat("\"{0}\":{1},", kv.Key, Convert.ToInt32(kv.Value));
}
else
{
Debug.Log("不支持此类型");
}
}
builder[builder.Length - 1] = '}';
return builder.ToString();
}
#endif
public static void EventObject(String eventID,Dictionary<string, object> dict)
{
}
public static void RegisterPreProperties(JSONObject jsonObject)
{
JSONObject filteredJsonObject = new JSONObject();
foreach (KeyValuePair<string, JSONNode> kv in jsonObject)
{
if (kv.Value.IsObject || kv.Value.IsArray)
{
Debug.LogError("不支持加入Object/Array类型,此kv对被丢弃");
}
else if ( kv.Value.IsBoolean)
{
filteredJsonObject.Add(kv.Key, Convert.ToInt32(kv.Value.AsBool));
}
else
{
filteredJsonObject.Add(kv.Key, kv.Value);
}
}
}
public static void UnregisterPreProperty(String propertyName)
{
}
public static JSONObject GetPreProperties()
{
return null;
}
public static void ClearPreProperties()
{
}
public static void SetFirstLaunchEvent(string[] trackID)
{
}
#if UNITY_IPHONE
#endif
}
}