using UnityEngine; using LitJson; using UnityEngine.Events; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Collections; public class SDKUtility : SingletonMonobehaviour { 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 onUniqueIDChanged; public static int wifiSignal = 3; public NetworkReachability NetWorkState = NetworkReachability.NotReachable; public UnityAction onAssetsCopyFinish; public UnityAction onBatteryChanged; // 0 "未开启监视电池状态", 1 "电池未充电状态", 2 "电池充电状态", 3 "电池充电完成" public int BatteryState { get; private set; } public UnityAction onBatteryStateChanged; /// /// 网络状态改变: 0: 无网络 1: wifi网络 2: 手机网络( >= 2为手机网络, 依次为2G,3G,4G) /// public UnityAction onNetStatusChanged; public UnityAction onPhoneSignalChanged; public UnityAction 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); /// /// Android的内部存储根目录 /// 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的Token: {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:// 个推客户端ID 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("currentActivity"); _jo.Call("copyAsset"); } public int GetDeviceMemInfo() { AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("currentActivity"); return _jo.Call("getMemInfo"); } public void RestartApp() { AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("currentActivity"); _jo.Call("RestartApp"); } public void CopyTextToClipboard(string content) { AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("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("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("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("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 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 onFreePlatfromCheckIDOK; public UnityAction onFreePlatfromDoIDAuthenticationOk; public void FreePlatformInit() { #if UNITY_IOS IOSMessageHandle("{\"code\":3100}"); #endif } /// /// 自由SDK登陆 /// public void FreePlatformLogin() { #if UNITY_ANDROID AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("currentActivity"); _jo.Call("FreePlatformLogin"); #elif UNITY_IOS IOSMessageHandle("{\"code\":3101}"); #endif } /// /// 自由SDK退出 /// public void FreePlatformLoginout() { #if UNITY_ANDROID AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("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("currentActivity"); _jo.Call("BindPhone"); #endif } public void FreePlatformSwitchAccount() { #if UNITY_ANDROID AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("currentActivity"); _jo.Call("SwitchAccount"); #endif } /// /// 自由SDK显示游戏中悬浮 /// public void FreePlatformShowGameFloat() { #if UNITY_ANDROID AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("currentActivity"); _jo.Call("ShowGameFloat"); #endif } /// /// 自由SDK隐藏游戏中悬浮 /// public void FreePlatformHideGameFloat() { #if UNITY_ANDROID AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("currentActivity"); _jo.Call("HideGameFloat"); #endif } private Dictionary m_PaymentTable = new Dictionary(); private string m_EncodeKey = "03sujm7gerywdvyd5vkkk772rs4by230"; /// /// 自由SDK支付 fixed sdk 支付逻辑修改 /// 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().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("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(); 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(); 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(_result); result.card_id = authenticationCardId; onFreePlatfromDoIDAuthenticationOk(result); } } else { } } private void HandleCheckIDAuthenticationResult(bool _ok, string _result) { if (_ok) { if (onFreePlatfromCheckIDOK != null) { var result = JsonMapper.ToObject(_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 dict = new Dictionary(); 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("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("currentActivity"); _jo.Call("TrackRegister", account); } public void TrackLogin(string account) { AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("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("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("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("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("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(); 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(); //} }