| 
									
										
										
										
											2022-07-04 11:17:39 +00:00
										 |  |  |  | //#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 | 
					
						
							| 
									
										
										
										
											2022-09-09 14:35:49 +00:00
										 |  |  |  |          | 
					
						
							| 
									
										
										
										
											2022-07-04 11:17:39 +00:00
										 |  |  |  | #endif | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | } |