From 9df5aae86c098bf019f764d27b47d72da37bff84 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 30 八月 2018 10:30:24 +0800
Subject: [PATCH] 2391 【前端】游戏性能优化

---
 Core/SDK/SDKUtility.cs | 1719 +++++++++++++++++++++++++++++------------------------------
 1 files changed, 843 insertions(+), 876 deletions(-)

diff --git a/Core/SDK/SDKUtility.cs b/Core/SDK/SDKUtility.cs
index a811ead..906e78b 100644
--- a/Core/SDK/SDKUtility.cs
+++ b/Core/SDK/SDKUtility.cs
@@ -1,876 +1,843 @@
-锘縰sing UnityEngine;
-using LitJson;
-using UnityEngine.Events;
-using System.Collections.Generic;
-using System.Runtime.InteropServices;
-using System.Collections;
-
-public class SDKUtility : SingletonMonobehaviour<SDKUtility>
-{
-    public static bool assetCopyFinish = false;
-
-    public static float ElectricQuantity = 1f;
-    public static string UniqueID = "";
-    public static string AND_UserAgent = "";
-    public static string AND_MacAddress = "";
-    public static string AND_IMEI = "";
-    public static string AND_AndroidID = "";
-    public static string AND_IP = "";
-    public UnityAction<string> onUniqueIDChanged;
-    public static int wifiSignal = 3;
-
-    public NetworkReachability NetWorkState = NetworkReachability.NotReachable;
-
-    public UnityAction onAssetsCopyFinish;
-    public UnityAction<int, int> onBatteryChanged;
-    // 0 "鏈紑鍚洃瑙嗙數姹犵姸鎬�", 1 "鐢垫睜鏈厖鐢电姸鎬�", 2 "鐢垫睜鍏呯數鐘舵��", 3 "鐢垫睜鍏呯數瀹屾垚"
-    public int BatteryState { get; private set; }
-    public UnityAction<int> onBatteryStateChanged;
-    /// <summary>
-    /// 缃戠粶鐘舵�佹敼鍙�: 0: 鏃犵綉缁� 1: wifi缃戠粶 2: 鎵嬫満缃戠粶( >= 2涓烘墜鏈虹綉缁�, 渚濇涓�2G,3G,4G)
-    /// </summary>
-    public UnityAction<int> onNetStatusChanged;
-    public UnityAction<int> onPhoneSignalChanged;
-    public UnityAction<int> onWifiSignalChanged;
-    public string GeTuiClientID { get; private set; }
-
-    public string channelId = "1000";
-    public string platfromId = "1000";
-
-    private const int CODE_SDK_COPY_ASSETS_OVER = 2001;
-    private const int CODE_SDK_BATTERY_CHANGED = 2002;
-    private const int CODE_SDK_NETSTATE_CHANGED = 2003;
-    private const int CODE_SDK_GETUI_CLIENT_ID = 2004;
-    private const int CODE_SDK_GETUI_MESSAGE = 2005;
-    private const int CODE_SDK_PHONESIGNAL_LEVEL = 2006;
-    private const int CODE_SDK_WIFISIGNAL_LEVEL = 2007;
-    private const int CODE_SDK_EXTERNALSTORAGEDIRECTORY = 2008;
-    private const int CODE_SDK_MAKEKEYANDVISIBLE = 2010;
-    private const int CODE_SDK_IOS_OPENURL = 2011;
-    private const int CODE_SDK_BATTERY_STATE_CHANGE = 2012;
-    private const int CODE_SDK_UNIQUE_ID_CHANGE = 2013;
-    private const int CODE_SDK_AD_TOKEN = 4000;
-    private const int CODE_SDK_USERAGENT = 4100;
-
-    public static bool hasGetAndroidInfo = false;
-
-    public string Account { get; private set; }
-
-    public string AD_Token
-    {
-        get; private set;
-    }
-
-    [DllImport("__Internal")]
-    private static extern void IOSMessageHandle(string json);
-
-    /// <summary>
-    /// Android鐨勫唴閮ㄥ瓨鍌ㄦ牴鐩綍
-    /// </summary>
-    public string externalStorageDirectory = null;
-
-    public void Initialize()
-    {
-        GeTuiClientID = string.Empty;
-
-        if (VersionConfig.Get().versionAuthority == VersionAuthority.Release)
-        {
-            SendClientPackage();
-        }
-
-#if !UNITY_EDITOR
-
-
-#if UNITY_IOS
-        var assetsCopyFinishVersion = LocalSave.GetString("AssetCopyCompleted_IOS");
-        if (string.IsNullOrEmpty(assetsCopyFinishVersion))
-        {
-            assetCopyFinish = false;
-        }
-        else
-        {
-            assetCopyFinish = VersionConfig.Get().version == assetsCopyFinishVersion;
-        }
-
-        FreePlatformInit();
-#endif
-        StartCoroutine("GetWifiState");
-#endif
-
-    }
-
-    private IEnumerator GetWifiState()
-    {
-        while (true)
-        {
-            yield return WaitingForSecondConst.WaitMS1000;
-
-            if (Application.internetReachability != NetWorkState)
-            {
-                NetWorkState = Application.internetReachability;
-
-                if (onNetStatusChanged != null)
-                {
-                    onNetStatusChanged((int)NetWorkState);
-                }
-            }
-        }
-    }
-
-    public void TestBattery()
-    {
-        int level = Random.Range(1, 100);
-        int total = 100;
-        ElectricQuantity = (float)level / total;
-
-        //Debug.LogFormat("鏀跺埌鐢甸噺閫氱煡 => 褰撳墠: {0}, 鎬婚噺: {1}, 鐧惧垎姣旓細{2}", level, total, ElectricQuantity);
-
-        if (onBatteryChanged != null)
-        {
-            onBatteryChanged(level, total);
-        }
-    }
-
-    public void TestWifi()
-    {
-        NetworkReachability _state = (NetworkReachability)Random.Range(0, 2);
-        if (NetWorkState != _state)
-        {
-            NetWorkState = _state;
-            if (onNetStatusChanged != null)
-            {
-                onNetStatusChanged((int)NetWorkState);
-            }
-            //Debug.LogFormat("缃戠粶鐘舵�佸彉鏇�: {0}", NetWorkState);
-        }
-
-    }
-
-    public void Recv_SDK_Callback(string msg)
-    {
-        JsonData _jsonData = JsonMapper.ToObject(msg);
-        switch ((int)_jsonData["code"])
-        {
-            case CODE_SDK_FREEPLATFORM_INIT_OK:// 鍒濆鍖栨垚鍔�
-                if (onFreePlatformInitOk != null)
-                {
-                    onFreePlatformInitOk();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_INIT_FAIL:// 鍒濆鍖栧け璐�
-                if (onFreePlatformInitFail != null)
-                {
-                    onFreePlatformInitFail();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_LOGIN_OK:// 鐧婚檰鎴愬姛
-
-#if UNITY_ANDROID
-                HandleFreePlatformLoginOk(_jsonData["info"]);
-#elif UNITY_IOS
-                HandleFreePlatformLoginOk(_jsonData);
-#endif
-
-                OperationLogCollect.Instance.RecordEvent(6);
-
-                break;
-            case CODE_SDK_FREEPLATFORM_LOGIN_FAIL:// 鐧婚檰鎴愬姛
-                if (onFreePlatformLoginFail != null)
-                {
-                    onFreePlatformLoginFail();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_LOGOUT_OK:// 鐧诲嚭鎴愬姛
-                if (onFreePlatformLogoutOk != null)
-                {
-                    onFreePlatformLogoutOk();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_LOGOUT_FAIL:// 鐧诲嚭澶辫触
-                if (onFreePlatformLogoutFail != null)
-                {
-                    onFreePlatformLogoutFail();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_PAY_OK:// 鏀粯鎴愬姛
-                if (onFreePlatformPayOk != null)
-                {
-                    onFreePlatformPayOk();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_PAY_FAIL:// 鏀粯澶辫触
-                if (onFreePlatformPayFail != null)
-                {
-                    onFreePlatformPayFail();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_PAY_CANCEL:// 鏀粯閫�鍑�
-                if (onFreePlatformPayCancel != null)
-                {
-                    onFreePlatformPayCancel();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_BIND_OK:
-                if (onFreePlatformBindOk != null)
-                {
-                    onFreePlatformBindOk();
-                }
-                break;
-            case CODE_SDK_FREEPLATFORM_BIND_FAIL:
-                if (onFreePlatformBindFail != null)
-                {
-                    onFreePlatformBindFail();
-                }
-                break;
-            case CODE_SDK_AD_TOKEN:
-                AD_Token = _jsonData["token"].ToString();
-                //Debug.LogFormat("鑾峰彇骞垮憡sdk鐨凾oken: {0}", AD_Token);
-                break;
-            case CODE_SDK_FREEPLATFORM_REG_OK:
-                Account = _jsonData["account"].ToString();
-                OperationLogCollect.Instance.RecordEvent(5);
-                SendTouTiaoADEvent(1);
-                break;
-            case CODE_SDK_BATTERY_CHANGED:// 鐢甸噺鏀瑰彉
-#if UNITY_ANDROID
-                HandleBatteryChanged(_jsonData["info"]);
-#elif UNITY_IOS
-                HandleBatteryChanged(_jsonData);
-#endif
-                break;
-            case CODE_SDK_BATTERY_STATE_CHANGE:
-                BatteryState = (int)_jsonData["status"];
-                //Debug.LogFormat("鏀跺埌鍏呯數鐘舵��: {0}", BatteryState);
-                if (onBatteryStateChanged != null)
-                {
-                    onBatteryStateChanged(BatteryState);
-                }
-                break;
-            case CODE_SDK_COPY_ASSETS_OVER:// 璧勬簮鎷疯礉瀹屾瘯
-                assetCopyFinish = true;
-                if (onAssetsCopyFinish != null)
-                {
-                    onAssetsCopyFinish();
-                }
-                break;
-            case CODE_SDK_GETUI_CLIENT_ID:// 涓帹瀹㈡埛绔疘D
-                HandleGT_ClientID(_jsonData);
-                break;
-            case CODE_SDK_GETUI_MESSAGE:// 涓帹閫忎紶淇℃伅
-                HandleGT_TouChuanMSG(_jsonData["info"]);
-                break;
-            case CODE_SDK_EXTERNALSTORAGEDIRECTORY:
-                externalStorageDirectory = _jsonData["info"].ToString();
-                break;
-            case CODE_SDK_UNIQUE_ID_CHANGE:
-                //WriteDebug(msg);
-                UniqueID = _jsonData["uniqueID"].ToString();
-                //WriteDebug("鑾峰彇鐨勫敮涓�璇嗗埆鐮佷负: " + UniqueID);
-                if (onUniqueIDChanged != null)
-                {
-                    onUniqueIDChanged(UniqueID);
-                }
-                break;
-            case CODE_SDK_USERAGENT:
-                //WriteDebug(msg);
-#if UNITY_ANDROID
-                AND_MacAddress = _jsonData["mac"].ToString();
-                AND_AndroidID = _jsonData["android_id"].ToString();
-                AND_IMEI = _jsonData["imei"].ToString();
-#endif
-                AND_UserAgent = _jsonData["userAgent"].ToString();
-                AND_IP = _jsonData["ip"].ToString();
-                hasGetAndroidInfo = true;
-                //WriteDebug("鏄惁瀹屾垚璁惧淇℃伅鑾峰彇: " + hasGetAndroidInfo);
-                break;
-        }
-    }
-
-    public void StartCopyAsset()
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("copyAsset");
-    }
-
-    public int GetDeviceMemInfo()
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        return _jo.Call<int>("getMemInfo");
-    }
-
-    public void RestartApp()
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("RestartApp");
-    }
-
-    public void CopyTextToClipboard(string content)
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("CopyTextToClipboard", content);
-    }
-
-    public void OpenUrl(string url)
-    {
-#if UNITY_ANDROID
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("OpenUrl", url);
-#elif UNITY_IOS
-        string _content = "{\"code\":2011,\"url\":\"" + url + "\"}";
-        IOSMessageHandle(_content);
-#endif
-    }
-
-    public void SendClientPackage()
-    {
-#if UNITY_ANDROID && !UNITY_EDITOR
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("setClientPackageID", VersionConfig.Get().clientPackageFlag);
-#endif
-    }
-
-    public void InstallAPK(string path)
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("InstallAPK", path);
-    }
-
-    public void MakeKeyAndVisible()
-    {
-#if UNITY_IOS
-        string _content = "{\"code\":2010}";
-        IOSMessageHandle(_content);
-#endif
-    }
-
-    public string GetAndroidRoot()
-    {
-        return externalStorageDirectory;
-    }
-
-    private void HandleBatteryChanged(JsonData data)
-    {
-        int _level = (int)data["level"];
-        int _scale = (int)data["scale"];
-
-        ElectricQuantity = (float)_level / _scale;
-
-        //Debug.LogFormat("鏀跺埌鐢甸噺閫氱煡 => 褰撳墠: {0}, 鎬婚噺: {1}, 鐧惧垎姣旓細{2}", _level, _scale, ElectricQuantity);
-
-        if (onBatteryChanged != null)
-        {
-            onBatteryChanged(_level, _scale);
-        }
-    }
-
-    private void HandleGT_ClientID(JsonData data)
-    {
-        GeTuiClientID = data["clientID"].ToString();
-        //DesignDebug.Log("鏀跺埌涓帹 => ClientID: " + GeTuiClientID);
-    }
-
-    private void HandleGT_TouChuanMSG(JsonData data)
-    {
-        string _getuiMSG = data["msg"].ToString();
-        //DesignDebug.Log("鏀跺埌涓帹閫忎紶淇℃伅 => msg: " + _getuiMSG);
-    }
-
-    #region 鑷敱SDK鐩稿叧
-
-    public struct FP_LoginOk
-    {
-        public string account;
-        public string token;
-        public string tokenExpire;
-        public int phone;
-        public int accountID;
-    }
-
-    public struct FP_CheckIDAuthentication
-    {
-        public string errorcode;
-        public string errordesc;
-        public string type;
-        public string card_id;
-    }
-
-    public struct FP_DoIDAuthentication
-    {
-        public string errorcode;
-        public string errordesc;
-        public string card_id;
-    }
-
-    public string AppID
-    {
-        get
-        {
-            return VersionConfig.Get().appId;
-        }
-    }
-
-    private const int CODE_SDK_FREEPLATFORM_INIT_OK = 3000;
-    private const int CODE_SDK_FREEPLATFORM_INIT_FAIL = 3001;
-    private const int CODE_SDK_FREEPLATFORM_LOGIN_OK = 3002;
-    private const int CODE_SDK_FREEPLATFORM_LOGIN_FAIL = 3003;
-    private const int CODE_SDK_FREEPLATFORM_LOGOUT_OK = 3004;
-    private const int CODE_SDK_FREEPLATFORM_LOGOUT_FAIL = 3005;
-    private const int CODE_SDK_FREEPLATFORM_PAY_OK = 3006;
-    private const int CODE_SDK_FREEPLATFORM_PAY_FAIL = 3007;
-    private const int CODE_SDK_FREEPLATFORM_PAY_CANCEL = 3008;
-    private const int CODE_SDK_FREEPLATFORM_BIND_OK = 3009;
-    private const int CODE_SDK_FREEPLATFORM_BIND_FAIL = 3010;
-    private const int CODE_SDK_FREEPLATFORM_REG_OK = 3011;
-
-    public UnityAction onFreePlatformInitOk;
-    public UnityAction onFreePlatformInitFail;
-    public UnityAction<FP_LoginOk> onFreePlatformLoginOk;
-    public UnityAction onFreePlatformLoginFail;
-    public UnityAction onFreePlatformLogoutOk;
-    public UnityAction onFreePlatformLogoutFail;
-    public UnityAction onFreePlatformPayOk;
-    public UnityAction onFreePlatformPayFail;
-    public UnityAction onFreePlatformPayCancel;
-    public UnityAction onFreePlatformBindOk;
-    public UnityAction onFreePlatformBindFail;
-    public UnityAction<FP_CheckIDAuthentication> onFreePlatfromCheckIDOK;
-    public UnityAction<FP_DoIDAuthentication> onFreePlatfromDoIDAuthenticationOk;
-
-    public void FreePlatformInit()
-    {
-#if UNITY_IOS
-        IOSMessageHandle("{\"code\":3100}");
-#endif
-    }
-
-    /// <summary>
-    /// 鑷敱SDK鐧婚檰
-    /// </summary>
-    public void FreePlatformLogin()
-    {
-#if UNITY_ANDROID
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("FreePlatformLogin");
-#elif UNITY_IOS
-        IOSMessageHandle("{\"code\":3101}");
-#endif
-    }
-
-    /// <summary>
-    /// 鑷敱SDK閫�鍑�
-    /// </summary>
-    public void FreePlatformLoginout()
-    {
-#if UNITY_ANDROID
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("FreePlatformLogout");
-#elif UNITY_IOS
-                IOSMessageHandle("{\"code\":3102}");
-#endif
-    }
-
-    public void FreePlatformBindPhone()
-    {
-#if UNITY_ANDROID
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("BindPhone");
-#endif
-    }
-
-    public void FreePlatformSwitchAccount()
-    {
-#if UNITY_ANDROID
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("SwitchAccount");
-#endif
-    }
-
-    /// <summary>
-    /// 鑷敱SDK鏄剧ず娓告垙涓偓娴�
-    /// </summary>
-    public void FreePlatformShowGameFloat()
-    {
-#if UNITY_ANDROID
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("ShowGameFloat");
-#endif
-    }
-
-    /// <summary>
-    /// 鑷敱SDK闅愯棌娓告垙涓偓娴�
-    /// </summary>
-    public void FreePlatformHideGameFloat()
-    {
-#if UNITY_ANDROID
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("HideGameFloat");
-#endif
-    }
-
-    private Dictionary<string, string> m_PaymentTable = new Dictionary<string, string>();
-    private string m_EncodeKey = "03sujm7gerywdvyd5vkkk772rs4by230";
-
-    /// <summary>
-    /// 鑷敱SDK鏀粯 fixed sdk 鏀粯閫昏緫淇敼
-    /// </summary>
-    public void FreePlatformPay(string title, float money, string cpInfo)
-    {
-        m_PaymentTable["ProductID"] = "snxxz";
-        m_PaymentTable["OperatorID"] = VersionConfig.Get().appId;
-        m_PaymentTable["RegionName"] = "s" + ServerListCenter.Instance.currentServer.region_flag;
-        m_PaymentTable["TimeStamp"] = ((long)(System.DateTime.Now - System.TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1))).TotalSeconds).ToString();
-        m_PaymentTable["Time"] = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-        m_PaymentTable["EventID"] = "12001";
-        m_PaymentTable["IP"] = DeviceUtility.GetIp();
-        m_PaymentTable["AccountID"] = Snxxz.UI.ModelCenter.Instance.GetModel<Snxxz.UI.LoginModel>().sdkLoginResult.account;
-        m_PaymentTable["SessionID"] = "11";
-        m_PaymentTable["Level"] = PlayerDatas.Instance.baseData.LV.ToString();
-        m_PaymentTable["VIPLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString();
-        m_PaymentTable["CurrencyAmount"] = money.ToString();
-        m_PaymentTable["OrderTitle"] = title;
-        m_PaymentTable["OrderInfo"] = cpInfo;
-        m_PaymentTable["AppID"] = VersionConfig.Get().appId;
-
-        var _stringBuilder = new System.Text.StringBuilder();
-        var _md5Body = _stringBuilder.Append(m_PaymentTable["AppID"]).
-                            Append(m_PaymentTable["AccountID"]).
-                            Append(m_PaymentTable["TimeStamp"]).
-                            Append(m_PaymentTable["CurrencyAmount"]).
-                            Append(m_EncodeKey);
-
-        var _md5Encode = System.Security.Cryptography.MD5.Create();
-        var _encodeResult = _md5Encode.ComputeHash(System.Text.Encoding.UTF8.GetBytes(_md5Body.ToString()));
-
-        _stringBuilder.Remove(0, _stringBuilder.Length);
-        for (int i = 0; i < _encodeResult.Length; ++i)
-        {
-            _stringBuilder.Append(_encodeResult[i].ToString("x2"));
-        }
-
-        m_PaymentTable["Sign"] = _stringBuilder.ToString();
-        m_PaymentTable["RoleID"] = PlayerDatas.Instance.baseData.PlayerName;
-
-        _stringBuilder.Remove(0, _stringBuilder.Length);
-
-        HttpRequest.Instance.RequestHttpGet(_stringBuilder.Append("http://recharge.game.173on.com:11000/api?").
-                                                           Append(HttpRequest.HashtablaToString(m_PaymentTable)).ToString(),
-            HttpRequest.defaultHttpContentType, 1, (bool result, string message) =>
-            {
-                if (result)
-                {
-                    JsonData _json = JsonMapper.ToObject(message);
-
-                    int _callbackResult = (int)_json["result"];
-
-                    if (_callbackResult == 1)
-                    {
-#if !UNITY_EDITOR
-
-#if UNITY_ANDROID
-                        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-                        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-                        _jo.Call("Pay", title, _json["orderid"].ToString(), money, cpInfo);
-
-#elif UNITY_IOS
-                        JsonData _params = new JsonData();
-                        _params["code"] = 3103;
-                        _params["identifier"] = VersionConfig.Get().bundleIdentifier;
-                        _params["cpOrderId"] = _json["orderid"].ToString();
-                        _params["total"] = money;
-                        _params["cpInfo"] = cpInfo;
-                        _params["title"] = title;
-                        IOSMessageHandle(_params.ToJson());
-#endif
-                        m_Order = _json["orderid"].ToString();
-                        m_Money = money;
-#endif
-                    }
-                    else
-                    {
-                        Debug.Log(_json["msg"].ToString());
-                        if (onFreePlatformPayFail != null)
-                        {
-                            onFreePlatformPayFail();
-                        }
-                    }
-                }
-                else
-                {
-                    if (onFreePlatformPayFail != null)
-                    {
-                        onFreePlatformPayFail();
-                    }
-                }
-            });
-    }
-
-    string authenticationCardId = "";
-    public void FreePlatformDoIDAuthentication(string _account, string _userName, string _idNumber)
-    {
-        authenticationCardId = _idNumber;
-
-        var tables = new Dictionary<string, string>();
-        tables["app_id"] = VersionConfig.Get().appId;
-        tables["account"] = _account;
-        tables["card_id"] = _idNumber;
-        tables["mac"] = DeviceUtility.GetMac();
-        tables["rolename"] = _userName;
-        tables["channelid"] = channelId;
-
-        var url = "http://zysdk.xileyougame.com/api.php/Service/anti_mystery?";
-        HttpRequest.Instance.RequestHttpGet(StringUtility.Contact(url, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType, 1, HandleIDAuthenticationResult);
-    }
-
-    public void FreePlatformCheckIDAuthentication(string _account)
-    {
-        var url = "http://zysdk.xileyougame.com/api.php/Service/check_mystery?";
-        var tables = new Dictionary<string, string>();
-        tables["app_id"] = VersionConfig.Get().appId;
-        tables["channelid"] = channelId;
-        tables["account"] = _account;
-        tables["platfrom_id"] = platfromId;
-
-        HttpRequest.Instance.RequestHttpGet(StringUtility.Contact(url, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType, 1, HandleCheckIDAuthenticationResult);
-    }
-
-    private void HandleIDAuthenticationResult(bool _ok, string _result)
-    {
-        if (_ok)
-        {
-            if (onFreePlatfromDoIDAuthenticationOk != null)
-            {
-                var result = JsonMapper.ToObject<FP_DoIDAuthentication>(_result);
-                result.card_id = authenticationCardId;
-                onFreePlatfromDoIDAuthenticationOk(result);
-            }
-        }
-        else
-        {
-
-        }
-    }
-
-    private void HandleCheckIDAuthenticationResult(bool _ok, string _result)
-    {
-        if (_ok)
-        {
-            if (onFreePlatfromCheckIDOK != null)
-            {
-                var result = JsonMapper.ToObject<FP_CheckIDAuthentication>(_result);
-                onFreePlatfromCheckIDOK(result);
-            }
-        }
-        else
-        {
-
-        }
-    }
-
-    private void HandleFreePlatformLoginOk(JsonData data)
-    {
-        FP_LoginOk _loginOK = new FP_LoginOk
-        {
-            token = data["token"].ToString(),
-            tokenExpire = data["token_expire"].ToString(),
-            account = data["account"].ToString(),
-            accountID = int.Parse(data["account_id"].ToString()),
-            phone = 0
-        };
-
-        Account = _loginOK.account;
-
-        if (onFreePlatformLoginOk != null)
-        {
-            onFreePlatformLoginOk(_loginOK);
-        }
-
-        //        string _cachePath = Application.persistentDataPath + "/record_sdk_login_content.txt";
-        //
-        //        if (!File.Exists(_cachePath))
-        //        {
-        //            File.Create(_cachePath);
-        //        }
-        //
-        //        string _content = string.Format("[{0}] sdk鐧婚檰瀹屾垚, 鑾峰緱淇℃伅 (token=\"{1}\", tokenExpire=\"{2}\", account=\"{3}\", accountID=\"{4}\", phone=\"{5}\")",
-        //                                        System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
-        //                                        _loginOK.token,
-        //                                        _loginOK.tokenExpire,
-        //                                        _loginOK.account,
-        //                                        _loginOK.accountID,
-        //                                        _loginOK.phone);
-        //
-        //        FileStream _fs = new FileStream(_cachePath, FileMode.Append);
-        //        StreamWriter _sw = new StreamWriter(_fs);
-        //        _sw.WriteLine(_content);
-        //        _sw.Close();
-        //        _fs.Close();
-    }
-
-    public void OnServerChargeOk(string orderID, uint coin)
-    {
-        OperationLogCollect.Instance.RecordEvent(9, coin);
-        SendTouTiaoADEvent(2);
-#if (UNITY_IOS || UNITY_ANDROID) && !UNITY_EDITOR
-
-        Dictionary<string, string> dict = new Dictionary<string, string>();
-        dict.Add("token", AD_Token);
-        dict.Add("amount", coin.ToString());
-        HttpRequest.Instance.RequestHttpPost("http://tako.lingleigame.com/api/pay?",
-                                             dict,
-                                             "application/x-www-form-urlencoded",
-                                             1, (result, msg) =>
-                                             {
-                                                 Debug.LogFormat("骞垮憡鍏呭�煎煁鐐瑰洖璋冪粨鏋�: {0}, 淇℃伅: {1}", result, msg);
-                                             });
-#endif
-        if (onFreePlatformPayOk != null)
-        {
-            onFreePlatformPayOk();
-        }
-
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("PayFinished", orderID, "_default_", "CNY", (float)coin / 100);
-    }
-
-    #endregion
-
-    #region 鐑簯SDK鐩稿叧
-
-    private string m_Order;
-    private float m_Money;
-
-    public void TrackRegister(string account)
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("TrackRegister", account);
-    }
-
-    public void TrackLogin(string account)
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("TrackLogin", account);
-    }
-
-    public void TrackPaymentStart(string transactionId, string paymentType, string currencyType, float currencyAmount)
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("TrackPaymentStart", transactionId, paymentType, currencyType, currencyAmount);
-    }
-
-    public void TrackPaymentFinish(string transactionId, string paymentType, string currencyType, float currencyAmount)
-    {
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("TrackPaymentFinish", transactionId, paymentType, currencyType, currencyAmount);
-    }
-
-    #endregion
-
-    #region 鏋佸厜鎺ㄩ�佺浉鍏�
-    public void GeTui_SendLocalMessage(JsonData jsonData)
-    {
-        //      ------ 涓句緥 ------
-        //		JsonData _params = new JsonData ();
-        //		_params ["code"] = 2005;
-        //		_params ["id"] = 5;// id 閲嶈, 鏍囩ず姣忎釜閫氱煡鐨勬洿鏂版垨鑰呯Щ闄�
-        //		_params ["title"] = "the title";// 鎺ㄩ�佹爣棰�
-        //		_params ["subtitle"] = "the subtitle";// 鍓爣棰�
-        //		_params ["content"] = "the content";// 鍏蜂綋鍐呭
-        //		_params ["badge"] = -1;// 瑙掓爣
-        //
-        //		// 浠ヤ笅涓哄喅瀹氬簲璇ュ涔呭悗寮瑰嚭姝ら�氱煡
-        //		System.TimeSpan ts = System.DateTime.UtcNow - new System.DateTime (1970, 1, 1, 0, 0, 0, 0);
-        //		long ret = System.Convert.ToInt64 (ts.TotalSeconds) + 3;// 琛ㄧず3绉掑悗
-        //		_params ["fireTime"] = ret;
-
-#if UNITY_IOS && !UNITY_EDITOR
-        IOSMessageHandle(jsonData.ToJson());
-#elif UNITY_ANDROID && !UNITY_EDITOR
-        
-        jsonData["fireTime"] = (long)jsonData["fireTime"] * 1000;
-
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("addLocalNotification", jsonData.ToJson());
-#endif
-    }
-
-    public void GeTui_RemoveLocalMessage(string id)
-    {
-        JsonData _params = new JsonData();
-        _params["code"] = 2006;
-        _params["id"] = id;// id 閲嶈, 鏍囩ず姣忎釜閫氱煡鐨勬洿鏂版垨鑰呯Щ闄�
-
-#if UNITY_IOS && !UNITY_EDITOR
-        IOSMessageHandle(_params.ToJson());
-#elif UNITY_ANDROID && !UNITY_EDITOR
-        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
-        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
-        _jo.Call("removeNotification", id);
-#endif
-    }
-
-    #endregion
-
-    public void SendTouTiaoADEvent(int eventType)
-    {
-#if !UNITY_EDITOR
-        string _url = "http://center.secondworld.net.cn:53004/ad/eventtype/" + VersionConfig.Get().clientPackageFlag + "?";
-
-        var tables = new Dictionary<string, string>();
-        tables["MAC1"] = AND_MacAddress;
-        tables["UA"] = WWW.EscapeURL(AND_UserAgent);
-        tables["ANDROIDID1"] = AND_AndroidID;
-        tables["IP"] = AND_IP;
-        tables["IMEI"] = AND_IMEI;
-        tables["event_type"] = eventType.ToString();
-
-        string _content = StringUtility.Contact(_url, HttpRequest.HashtablaToString(tables));
-
-        Debug.Log("TouTiaoAD: " + _content);
-
-        HttpRequest.Instance.RequestHttpGet(_content, HttpRequest.defaultHttpContentType, 1, (result, message) =>
-        {
-            if (!result)
-            {
-                Debug.Log(message);
-            }
-        });
-#endif
-    }
-
-    //public void WriteDebug(string content)
-    //{
-    //    string _url = Application.persistentDataPath + "/debug_log.txt";
-    //    System.IO.FileInfo _fileInfo = new System.IO.FileInfo(_url);
-    //    System.IO.StreamWriter _sw = null;
-    //    if (_fileInfo.Exists)
-    //    {
-    //        _sw = _fileInfo.AppendText();
-    //    }
-    //    else
-    //    {
-    //        _sw = _fileInfo.CreateText();
-    //    }
-    //    _sw.WriteLine(content);
-    //    _sw.Close();
-    //    _sw.Dispose();
-    //}
-}
+锘縰sing UnityEngine;
+using LitJson;
+using UnityEngine.Events;
+using System.Collections;
+using System.Collections.Generic;
+
+public class SDKUtility : SingletonMonobehaviour<SDKUtility>
+{
+    [System.Runtime.InteropServices.DllImport("__Internal")]
+    private static extern void IOSMessageHandle(string json);
+
+    public enum E_ChargingType
+    {
+        NoCharging = 1,
+        Charging = 2,
+        ChargingFull = 3,
+    }
+
+    /// <summary>
+    /// sdk鍒濆鍖栨槸鍚﹀畬鎴愭爣璇�
+    /// 瀹㈡埛绔竴鑸渶瑕佺瓑寰呰繖涓�间负true鎵嶇户缁�昏緫
+    /// </summary>
+    public bool InitFinished { get; private set; }
+
+    #region 鍩虹瀹氫箟涓庡洖璋�
+
+    /// <summary>
+    /// 褰撳墠璁惧鐢甸噺鍊�
+    /// </summary>
+    public int BatteryLevel { get; private set; }
+    /// <summary>
+    /// 璁惧鐢甸噺鍊兼敼鍙樺洖璋�
+    /// </summary>
+    public UnityAction<int> OnBatteryLevelChanged;
+
+    /// <summary>
+    /// 褰撳墠鍏呯數鐘舵��
+    /// </summary>
+    public E_ChargingType ChargingType { get; private set; }
+    /// <summary>
+    /// 褰撳墠鍏呯數鐘舵�佹敼鍙樺洖璋�
+    /// </summary>
+    public UnityAction<E_ChargingType> OnChargingTypeChanged;
+
+    /// <summary>
+    /// 璁惧淇℃伅
+    /// </summary>
+    public DeviceInfo Device { get; private set; }
+    /// <summary>
+    /// 璁惧淇℃伅鏀瑰彉鍥炶皟
+    /// </summary>
+    public UnityAction<DeviceInfo> OnDeviceInfoChanged;
+
+    /// <summary>
+    /// 褰撳墠缃戠粶鐘舵��
+    /// </summary>
+    public NetworkReachability NetworkType { get; private set; }
+    /// <summary>
+    /// 褰撳墠缃戠粶鐘舵�佹敼鍙樺洖璋�
+    /// </summary>
+    public UnityAction<NetworkReachability> OnNetworkStatusChanged;
+
+    /// <summary>
+    /// 鏄惁宸茬粡灏哠treamingAsset鎷疯礉鑷崇洰鏍囪矾寰�
+    /// </summary>
+    public bool AssetCopyFinished { get; private set; }
+
+    /// <summary>
+    /// 瀹夊崜璁惧鏍圭洰褰�
+    /// </summary>
+    public string DeviceRootPath { get; private set; }
+
+    #endregion
+
+    #region 鏋佸厜鎺ㄩ��
+    public string RegistrationID { get; private set; }
+    #endregion
+
+    #region 鑷敱sdk
+    public FP_LoginOk FreePlatformInfo { get; private set; }
+    #endregion
+
+    private JsonData m_Json = new JsonData();
+
+    public void Init()
+    {
+        RegistrationID = string.Empty;
+        AssetCopyFinished = false;
+#if !UNITY_EDITOR
+        if (InitFinished)
+        {
+            return;
+        }
+
+#if UNITY_IOS
+
+        var assetsCopyFinishVersion = LocalSave.GetString("AssetCopyCompleted_IOS");
+        if (string.IsNullOrEmpty(assetsCopyFinishVersion))
+        {
+            AssetCopyFinished = false;
+        }
+        else
+        {
+            AssetCopyFinished = VersionConfig.Get().version == assetsCopyFinishVersion;
+        }
+
+#elif UNITY_ANDROID
+
+        SyncClientPackageID();
+
+#endif
+
+        InitFinished = false;
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.Init;
+        SendMessageToSDK(m_Json);
+#endif
+    }
+
+    private void OnApplicationFocus(bool focus)
+    {
+#if !UNITY_EDITOR
+        m_Json.Clear();
+        if (focus)
+        {
+            m_Json["code"] = CodeU2A.BatteryListenStart;
+            StopCoroutine("ProcessNetworkStatus");
+            StartCoroutine("ProcessNetworkStatus");
+        }
+        else
+        {
+            m_Json["code"] = CodeU2A.BatteryListenStop;
+            StopCoroutine("ProcessNetworkStatus");
+        }
+        SendMessageToSDK(m_Json);
+#endif
+    }
+
+    private IEnumerator ProcessNetworkStatus()
+    {
+        while (true)
+        {
+            if (Application.internetReachability != NetworkType)
+            {
+                NetworkType = Application.internetReachability;
+
+                if (OnNetworkStatusChanged != null)
+                {
+                    OnNetworkStatusChanged(NetworkType);
+                }
+            }
+            yield return WaitingForSecondConst.WaitMS1000;
+        }
+    }
+
+    #region 涓氬姟灞傚畾涔夌浉鍏抽�昏緫
+
+    public void InstallAPK(string path)
+    {
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.InstallAPK;
+        m_Json["path"] = path;
+        SendMessageToSDK(m_Json);
+    }
+
+    public void CopyAsset()
+    {
+        if (AssetCopyFinished)
+        {
+            return;
+        }
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.AssetCopy;
+        SendMessageToSDK(m_Json);
+    }
+
+    public void CopyContent(string content)
+    {
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.CopyContent;
+        m_Json["content"] = content;
+        SendMessageToSDK(m_Json);
+    }
+
+    public void RestartApp()
+    {
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.RestartApp;
+        SendMessageToSDK(m_Json);
+    }
+
+    public void OpenUrl(string url)
+    {
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.OpenWebView;
+        m_Json["url"] = url;
+        SendMessageToSDK(m_Json);
+    }
+
+    public void MakeKeyAndVisible()
+    {
+#if !UNITY_EDITOR
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.MakeKeyAndVisible;
+        SendMessageToSDK(m_Json);
+#endif
+    }
+
+    public void SyncClientPackageID()
+    {
+#if !UNITY_EDITOR
+#if UNITY_ANDROID
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.ClientPackage;
+        m_Json["clientPkgID"] = VersionConfig.Get().clientPackageFlag;
+        SendMessageToSDK(m_Json);
+#endif
+#endif
+    }
+
+    #endregion
+
+    #region 澶勭悊涓嶴DK浜や簰鐨勫簳灞傛柟娉�
+
+    public static AndroidJavaObject GetApplicationContext()
+    {
+        using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
+        {
+            using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))
+            {
+                return jo.Call<AndroidJavaObject>("getApplicationContext");
+            }
+        }
+    }
+
+    private void SendMessageToSDK(JsonData json)
+    {
+#if !UNITY_EDITOR
+#if UNITY_ANDROID
+        using (AndroidJavaClass H2engineSDK = new AndroidJavaClass("com.secondworld.univeralsdk.H2EngineSDK"))
+        {
+            H2engineSDK.CallStatic("HandleUnityMessage", json.ToJson());
+        }
+#elif UNITY_IOS
+        IOSMessageHandle(json.ToJson());
+#endif
+#endif
+    }
+
+    public void HandleSdkMessage(string jsonString)
+    {
+        Debug.Log("鏀跺埌SDK鍙戞潵鐨勪俊鎭�: " + jsonString);
+        var _json = JsonMapper.ToObject(jsonString);
+        var _code = (int)_json["code"];
+        switch (_code)
+        {
+			case CodeA2U.DeviceInfo:
+
+				Device = new DeviceInfo ();
+				Device.uniqueID = _json ["unique_id"].ToString ();
+				Device.androidID = _json ["android_id"].ToString ();// ios骞冲彴涓嬩负idfa
+				Device.userAgent = _json ["userAgent"].ToString ();
+#if UNITY_ANDROID
+				Device.macAddress = _json ["mac"].ToString ();
+				Device.imei = _json ["imei"].ToString ();
+				Device.totalMemory = (int)_json ["memoryTotal"];
+#endif
+                if (OnDeviceInfoChanged != null)
+                {
+                    OnDeviceInfoChanged(Device);
+                }
+
+                break;
+            case CodeA2U.AssetCopyFinished:
+                AssetCopyFinished = true;
+                break;
+            case CodeA2U.BatteryLevel:
+
+                BatteryLevel = (int)_json["level"];
+                if (OnBatteryLevelChanged != null)
+                {
+                    OnBatteryLevelChanged(BatteryLevel);
+                }
+
+                break;
+            case CodeA2U.BatteryCharging:
+
+                ChargingType = (E_ChargingType)((int)_json["status"]);
+                if (OnChargingTypeChanged != null)
+                {
+                    OnChargingTypeChanged(ChargingType);
+                }
+
+                break;
+            case CodeA2U.SdkInitComplete:
+                InitFinished = true;
+                break;
+            case CodeA2U.PushClientID:
+                RegistrationID = _json["clientID"].ToString();
+                break;
+            case CodeA2U.ExternalStorage:
+                DeviceRootPath = _json["path"].ToString();
+                break;
+
+            case CodeA2U.FreePlatformInitOk:
+
+                if (onFreePlatformInitOk != null)
+                {
+                    onFreePlatformInitOk();
+                }
+
+                break;
+            case CodeA2U.FreePlatformInitFail:
+                if (onFreePlatformInitFail != null)
+                {
+                    onFreePlatformInitFail();
+                }
+                break;
+            case CodeA2U.FreePlatformRegisterOk:
+                HandleFreePlatformRegisteOk(_json);
+                break;
+            case CodeA2U.FreePlatformLoginOk:
+                HandleFreePlatformLoginOk(_json["info"]);
+                break;
+            case CodeA2U.FreePlatformLoginFail:
+                if (onFreePlatformLoginFail != null)
+                {
+                    onFreePlatformLoginFail();
+                }
+                break;
+            case CodeA2U.FreePlatformLogoutOk:
+                if (onFreePlatformLogoutOk != null)
+                {
+                    onFreePlatformLogoutOk();
+                }
+                break;
+            case CodeA2U.FreePlatformLogoutFail:
+                if (onFreePlatformLogoutFail != null)
+                {
+                    onFreePlatformLogoutFail();
+                }
+                break;
+            case CodeA2U.FreePlatformPayOk:
+                if (onFreePlatformPayOk != null)
+                {
+                    onFreePlatformPayOk();
+                }
+                break;
+            case CodeA2U.FreePlatformPayFail:
+                if (onFreePlatformPayFail != null)
+                {
+                    onFreePlatformPayFail();
+                }
+                break;
+            case CodeA2U.FreePlatformPayCancel:
+                if (onFreePlatformPayCancel != null)
+                {
+                    onFreePlatformPayCancel();
+                }
+                break;
+        }
+    }
+
+    #endregion
+
+    #region 浜や簰鐩稿叧绾﹀畾缂栧彿
+
+    private static class CodeA2U
+    {
+        #region 鑷敱sdk_code
+        public const int FreePlatformInitOk = 10;
+        public const int FreePlatformInitFail = 11;
+        public const int FreePlatformLoginOk = 12;
+        public const int FreePlatformLoginFail = 13;
+        public const int FreePlatformLoginCancel = 14;
+        public const int FreePlatformLogoutOk = 15;
+        public const int FreePlatformLogoutFail = 16;
+        public const int FreePlatformSwitchAccountOk = 17;
+        public const int FreePlatformPayOk = 18;
+        public const int FreePlatformPayFail = 19;
+        public const int FreePlatformPayCancel = 20;
+        public const int FreePlatformRegisterOk = 21;
+        #endregion
+
+        #region 鍩虹sdk_code
+        /**
+         * 璧勬簮鎷疯礉瀹屾垚
+         */
+        public const int AssetCopyFinished = 0;
+        /**
+         * 鐢甸噺鏀瑰彉
+         */
+        public const int BatteryLevel = 1;
+        /**
+         * 鍏呯數鐘舵�佹敼鍙�
+         */
+        public const int BatteryCharging = 2;
+        /**
+         * 鍥炶皟sdk閫昏緫瀹屾瘯
+         * */
+        public const int SdkInitComplete = 90;
+        /**
+         * 鍥炶皟android璁惧淇℃伅
+         * */
+        public const int DeviceInfo = 3;
+        /**
+         * 鍥炶皟鎺ㄩ�佺殑鐙珛id
+         * */
+        public const int PushClientID = 4;
+        /**
+         * 鍥炶皟澶栭儴瀛樺偍鏍圭洰褰曞湴鍧�
+         */
+        public const int ExternalStorage = 5;
+        #endregion
+    }
+
+    private static class CodeU2A
+    {
+        /**
+         * 鎵ц璧勬簮鎷疯礉
+         */
+        public const int AssetCopy = 0;
+        /**
+         * 鎵ц寮�濮嬬數閲忔敼鍙�,鍏呯數鐘舵�佹敼鍙樼洃鍚�
+         */
+        public const int BatteryListenStart = 1;
+        /**
+         * 鎵ц鍋滄鐢甸噺鏀瑰彉,鍏呯數鐘舵�佹敼鍙樼洃鍚�
+         */
+        public const int BatteryListenStop = 2;
+        /**
+         * 鑾峰彇鍞竴璇嗗埆鐮�
+         */
+        public const int UniqueID = 3;
+        /**
+         * 鐢宠鍦ˋndroidManifest鏂囦欢涓�
+         */
+        public const int RequestManifestPermissions = 4;
+        /**
+         * 鍗曠嫭鍔ㄦ�佺敵璇锋煇涓�涓潈闄�
+         */
+        public const int RequestPermission = 5;
+        /**
+         * 閲嶅惎搴旂敤
+         */
+        public const int RestartApp = 6;
+        /**
+         * 鎷疯礉鏂囨湰淇℃伅
+         */
+        public const int CopyContent = 7;
+        /**
+         * 鎵撳紑缃戝潃
+         */
+        public const int OpenWebView = 8;
+        /**
+         * SDK鍒濆鍖�, 瀹屽叏鑷姩鍒濆鍖栫殑娴佺▼, 瀹屾垚蹇呰閫昏緫鍚庡啀鍥炶皟鍥炲幓
+         */
+        public const int Init = 9;
+        /**
+         * 瀹夎搴旂敤
+         */
+        public const int InstallAPK = 10;
+        /**
+         * 澶栭儴瀛樺偍鏍圭洰褰曞湴鍧�
+         */
+        public const int ExteneralStorage = 11;
+        /**
+         * 鑷敱sdk鐩稿叧
+         * */
+        public const int FreePlatformInit = 100;
+        public const int FreePlatformLogin = 101;
+        public const int FreePlatformLogout = 102;
+        public const int FreePlatformSwitchAccount = 103;
+        public const int FreePlatformPay = 104;
+        public const int PayFinished = 105;
+        /**
+         * 鏋佸厜鎺ㄩ��
+         * */
+        public const int JPushAddLocalMessage = 200;
+        public const int JPushRemoveLocalMessage = 201;
+        /**
+         * IOS鐗规畩闇�姹�
+         */
+        public const int MakeKeyAndVisible = 300;
+        /**
+         * ClientPackage鍚憇dk鍙戦�佸垎鍖卛d
+         */
+        public const int ClientPackage = 400;
+    }
+
+    #endregion
+
+    public class DeviceInfo
+    {
+        public string imei;
+        public string macAddress;
+        public string androidID;
+        public string uniqueID;
+        public string userAgent;
+        public int totalMemory;
+    }
+
+    #region 鑷敱sdk鐩稿叧
+
+    public UnityAction onFreePlatformInitOk;
+    public UnityAction onFreePlatformInitFail;
+    public UnityAction<FP_LoginOk> onFreePlatformLoginOk;
+    public UnityAction onFreePlatformLoginFail;
+    public UnityAction onFreePlatformLogoutOk;
+    public UnityAction onFreePlatformLogoutFail;
+    public UnityAction onFreePlatformPayOk;
+    public UnityAction onFreePlatformPayFail;
+    public UnityAction onFreePlatformPayCancel;
+    public UnityAction onFreePlatformBindOk;
+    public UnityAction onFreePlatformBindFail;
+
+    public class FP_LoginOk
+    {
+        public string account;
+        public string token;
+        public string tokenExpire;
+        public int phone;
+        public int accountID;
+    }
+
+    public struct FP_CheckIDAuthentication
+    {
+        public string errorcode;
+        public string errordesc;
+        public string type;
+        public string card_id;
+    }
+
+    public struct FP_DoIDAuthentication
+    {
+        public string errorcode;
+        public string errordesc;
+        public string card_id;
+    }
+
+    string authenticationCardId = "";
+    public string channelId = "1000";
+    public string platfromId = "1000";
+    public UnityAction<FP_CheckIDAuthentication> onFreePlatfromCheckIDOK;
+    public UnityAction<FP_DoIDAuthentication> onFreePlatfromDoIDAuthenticationOk;
+
+
+    public void FreePlatformInit()
+    {
+#if !UNITY_EDITOR
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.FreePlatformInit;
+        SendMessageToSDK(m_Json);
+#endif
+    }
+
+    public void FreePlatformBindPhone()
+    {
+#if UNITY_ANDROID
+        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
+        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
+        _jo.Call("BindPhone");
+#endif
+    }
+
+    /// <summary>
+    /// 鑷敱SDK鐧婚檰
+    /// </summary>
+    public void FreePlatformLogin()
+    {
+#if !UNITY_EDITOR
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.FreePlatformLogin;
+        SendMessageToSDK(m_Json);
+#endif
+    }
+
+    /// <summary>
+    /// 鑷敱SDK鐧诲嚭
+    /// </summary>
+    public void FreePlatformLoginout()
+    {
+#if !UNITY_EDITOR
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.FreePlatformLogout;
+        SendMessageToSDK(m_Json);
+#endif
+    }
+
+    public void FreePlatformSwitchAccount()
+    {
+#if UNITY_ANDROID
+        AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
+        AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
+        _jo.Call("SwitchAccount");
+#endif
+    }
+
+    private Dictionary<string, string> m_PaymentTable = new Dictionary<string, string>();
+    private string m_EncodeKey = "03sujm7gerywdvyd5vkkk772rs4by230";
+
+    /// <summary>
+    /// 鑷敱SDK鏀粯 fixed sdk 鏀粯閫昏緫淇敼
+    /// </summary>
+    public void FreePlatformPay(string title, float money, string cpInfo)
+    {
+        m_PaymentTable["ProductID"] = "snxxz";
+        m_PaymentTable["OperatorID"] = VersionConfig.Get().appId;
+        m_PaymentTable["RegionName"] = "s" + ServerListCenter.Instance.currentServer.region_flag;
+        m_PaymentTable["TimeStamp"] = ((long)(System.DateTime.Now - System.TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1))).TotalSeconds).ToString();
+        m_PaymentTable["Time"] = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+        m_PaymentTable["EventID"] = "12001";
+        m_PaymentTable["IP"] = DeviceUtility.GetIp();
+        m_PaymentTable["AccountID"] = FreePlatformInfo.account;
+        m_PaymentTable["SessionID"] = "11";
+        m_PaymentTable["Level"] = PlayerDatas.Instance.baseData.LV.ToString();
+        m_PaymentTable["VIPLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString();
+        m_PaymentTable["CurrencyAmount"] = money.ToString();
+        m_PaymentTable["OrderTitle"] = title;
+        m_PaymentTable["OrderInfo"] = cpInfo;
+        m_PaymentTable["AppID"] = VersionConfig.Get().appId;
+
+        var _stringBuilder = new System.Text.StringBuilder();
+        var _md5Body = _stringBuilder.Append(m_PaymentTable["AppID"]).
+                            Append(m_PaymentTable["AccountID"]).
+                            Append(m_PaymentTable["TimeStamp"]).
+                            Append(m_PaymentTable["CurrencyAmount"]).
+                            Append(m_EncodeKey);
+
+        var _md5Encode = System.Security.Cryptography.MD5.Create();
+        var _encodeResult = _md5Encode.ComputeHash(System.Text.Encoding.UTF8.GetBytes(_md5Body.ToString()));
+
+        _stringBuilder.Remove(0, _stringBuilder.Length);
+        for (int i = 0; i < _encodeResult.Length; ++i)
+        {
+            _stringBuilder.Append(_encodeResult[i].ToString("x2"));
+        }
+
+        m_PaymentTable["Sign"] = _stringBuilder.ToString();
+        m_PaymentTable["RoleID"] = PlayerDatas.Instance.baseData.PlayerName;
+
+        _stringBuilder.Remove(0, _stringBuilder.Length);
+
+        HttpRequest.Instance.RequestHttpGet(_stringBuilder.Append("http://recharge.game.173on.com:11000/api?").
+                                                           Append(HttpRequest.HashtablaToString(m_PaymentTable)).ToString(),
+            HttpRequest.defaultHttpContentType, 1, (bool result, string message) =>
+            {
+                if (result)
+                {
+                    JsonData _json = JsonMapper.ToObject(message);
+
+                    int _callbackResult = (int)_json["result"];
+
+                    if (_callbackResult == 1)
+                    {
+#if !UNITY_EDITOR
+                        m_Json.Clear();
+                        m_Json["code"] = CodeU2A.FreePlatformPay;
+                        m_Json["orderId"] = _json["orderid"].ToString();
+                        m_Json["mount"] = money;
+                        m_Json["cpInfo"] = cpInfo;
+                        m_Json["title"] = title;
+#if UNITY_IOS
+                        m_Json["identifier"] = VersionConfig.Get().bundleIdentifier;
+#endif
+                        SendMessageToSDK(m_Json);
+#endif
+                    }
+                    else
+                    {
+                        Debug.Log(_json["msg"].ToString());
+                        if (onFreePlatformPayFail != null)
+                        {
+                            onFreePlatformPayFail();
+                        }
+                    }
+                }
+                else
+                {
+                    if (onFreePlatformPayFail != null)
+                    {
+                        onFreePlatformPayFail();
+                    }
+                }
+            });
+    }
+
+    public void FreePlatformDoIDAuthentication(string _account, string _userName, string _idNumber)
+    {
+        authenticationCardId = _idNumber;
+
+        var tables = new Dictionary<string, string>();
+        tables["app_id"] = VersionConfig.Get().appId;
+        tables["account"] = _account;
+        tables["card_id"] = _idNumber;
+        tables["mac"] = DeviceUtility.GetMac();
+        tables["rolename"] = _userName;
+        tables["channelid"] = channelId;
+
+        var url = "http://zysdk.xileyougame.com/api.php/Service/anti_mystery?";
+        HttpRequest.Instance.RequestHttpGet(StringUtility.Contact(url, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType, 1, HandleIDAuthenticationResult);
+    }
+
+    public void FreePlatformCheckIDAuthentication(string _account)
+    {
+        var url = "http://zysdk.xileyougame.com/api.php/Service/check_mystery?";
+        var tables = new Dictionary<string, string>();
+        tables["app_id"] = VersionConfig.Get().appId;
+        tables["channelid"] = channelId;
+        tables["account"] = _account;
+        tables["platfrom_id"] = platfromId;
+
+        HttpRequest.Instance.RequestHttpGet(StringUtility.Contact(url, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType, 1, HandleCheckIDAuthenticationResult);
+    }
+
+    private void HandleIDAuthenticationResult(bool _ok, string _result)
+    {
+        if (_ok)
+        {
+            if (onFreePlatfromDoIDAuthenticationOk != null)
+            {
+                var result = JsonMapper.ToObject<FP_DoIDAuthentication>(_result);
+                result.card_id = authenticationCardId;
+                onFreePlatfromDoIDAuthenticationOk(result);
+            }
+        }
+    }
+
+    private void HandleCheckIDAuthenticationResult(bool _ok, string _result)
+    {
+        if (_ok)
+        {
+            if (onFreePlatfromCheckIDOK != null)
+            {
+                var result = JsonMapper.ToObject<FP_CheckIDAuthentication>(_result);
+                onFreePlatfromCheckIDOK(result);
+            }
+        }
+    }
+
+    private void BuildFreePlatformInfo(JsonData json)
+    {
+        if (FreePlatformInfo == null)
+        {
+            FreePlatformInfo = new FP_LoginOk();
+        }
+
+        IDictionary _iDict = json as IDictionary;
+
+        if (_iDict.Contains("token"))
+        {
+            FreePlatformInfo.token = json["token"].ToString();
+        }
+        if (_iDict.Contains("token_expire"))
+        {
+            FreePlatformInfo.tokenExpire = json["token_expire"].ToString();
+        }
+        if (_iDict.Contains("account"))
+        {
+            FreePlatformInfo.account = json["account"].ToString();
+        }
+        if (_iDict.Contains("account_id"))
+        {
+            int.TryParse(json["account_id"].ToString(), out FreePlatformInfo.accountID);
+        }
+
+        FreePlatformInfo.phone = 0;
+    }
+
+    private void HandleFreePlatformRegisteOk(JsonData json)
+    {
+        BuildFreePlatformInfo(json);
+    }
+
+    private void HandleFreePlatformLoginOk(JsonData data)
+    {
+        BuildFreePlatformInfo(data);
+
+        if (onFreePlatformLoginOk != null)
+        {
+            onFreePlatformLoginOk(FreePlatformInfo);
+        }
+    }
+
+    public void OnServerChargeOk(string orderID, uint coin)
+    {
+        OperationLogCollect.Instance.RecordEvent(9, coin);
+
+        if (onFreePlatformPayOk != null)
+        {
+            onFreePlatformPayOk();
+        }
+
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.PayFinished;
+        m_Json["orderID"] = orderID;
+        m_Json["payType"] = "_default_";
+        m_Json["moneyType"] = "CNY";
+        m_Json["money"] = (float)coin / 100;
+        SendMessageToSDK(m_Json);
+    }
+    #endregion
+
+    #region 鏋佸厜鎺ㄩ�佺浉鍏�
+    public void GeTui_SendLocalMessage(JsonData jsonData)
+    {
+        DebugEx.Log("GeTui_SendLocalMessage:" + jsonData["id"]);
+        //      ------ 涓句緥 ------
+        //		JsonData _params = new JsonData ();
+        //		_params ["code"] = 2005;
+        //		_params ["id"] = 5;// id 閲嶈, 鏍囩ず姣忎釜閫氱煡鐨勬洿鏂版垨鑰呯Щ闄�
+        //		_params ["title"] = "the title";// 鎺ㄩ�佹爣棰�
+        //		_params ["subtitle"] = "the subtitle";// 鍓爣棰�
+        //		_params ["content"] = "the content";// 鍏蜂綋鍐呭
+        //		_params ["badge"] = -1;// 瑙掓爣
+        //
+        //		// 浠ヤ笅涓哄喅瀹氬簲璇ュ涔呭悗寮瑰嚭姝ら�氱煡
+        //		System.TimeSpan ts = System.DateTime.UtcNow - new System.DateTime (1970, 1, 1, 0, 0, 0, 0);
+        //		long ret = System.Convert.ToInt64 (ts.TotalSeconds) + 3;// 琛ㄧず3绉掑悗
+        //		_params ["fireTime"] = ret;
+#if !UNITY_EDITOR
+        jsonData["code"] = CodeU2A.JPushAddLocalMessage;
+#if UNITY_ANDROID
+        jsonData["fireTime"] = (long)jsonData["fireTime"] * 1000;
+#endif
+        SendMessageToSDK(jsonData);
+#endif
+    }
+
+    public void GeTui_RemoveLocalMessage(string id)
+    {
+        DebugEx.Log("GeTui_RemoveLocalMessage:" + id);
+#if !UNITY_EDITOR
+        m_Json.Clear();
+        m_Json["code"] = CodeU2A.JPushRemoveLocalMessage;
+        m_Json["id"] = id;// id 閲嶈, 鏍囩ず姣忎釜閫氱煡鐨勬洿鏂版垨鑰呯Щ闄�
+
+        SendMessageToSDK(m_Json);
+#endif
+    }
+
+    #endregion
+}

--
Gitblit v1.8.0