240 lines
5.1 KiB
C#
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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|