using UnityEngine; using LitJson; using UnityEngine.Events; using System.Collections; using System.Collections.Generic; using System.IO; using System; using UnityEngine.Android; public class SDKUtils : SingletonMonobehaviour { public enum E_ChargingType { NoCharging = 1, Charging = 2, ChargingFull = 3, } public enum E_ChannelPlatform { Free = 1,// 默认 Quick = 10, //quick Hy = 15, //欢游 } //权限申请回调 private Action onPermissionCallBack; public event Action onSdkMsg; public E_ChannelPlatform ChannelPlatform { get; set; } public static string Yj_AppID { get; private set; } public static string ThirdPartVersion { get; private set; } public static string Yj_SpID { get; private set; } public static string ThirdPartAppID { get; private set; } public static string Yj_BanHao { get; private set; } // 是否同意隐私政策 public bool IsAgreeSecret = false; /// /// sdk初始化是否完成标识 /// 客户端一般需要等待这个值为true才继续逻辑 /// public bool InitFinished { get; private set; } #region 基础定义与回调 /// /// 当前设备电量值 /// public int BatteryLevel { get; private set; } /// /// 设备电量值改变回调 /// public UnityAction OnBatteryLevelChanged; /// /// 当前充电状态 /// public E_ChargingType ChargingType { get; private set; } /// /// 当前充电状态改变回调 /// public UnityAction OnChargingTypeChanged; /// /// 设备信息 /// public DeviceInfo Device { get; private set; } /// /// 设备信息改变回调 /// public UnityAction OnDeviceInfoChanged; /// /// 当前网络状态 /// public NetworkReachability NetworkType { get; private set; } /// /// 当前网络状态改变回调 /// public UnityAction OnNetworkStatusChanged; public static bool builtinAssetCopyFinished { get; private set; } /// /// 是否已经将StreamingAsset拷贝至目标路径 /// public bool AssetCopyFinished { get; private set; } /// /// 安卓设备根目录 /// 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() { Device = new DeviceInfo(); string uid = LocalSave.GetString("Device_uniqueID"); //Debug.Log(Math.Abs(System.Environment.TickCount)); if (uid.Length <= 5) { long tick = Math.Abs(System.Environment.TickCount); uid = tick.ToString() + UnityEngine.Random.Range(1, ulong.MaxValue/*Constants.ExpPointValue*/).ToString(); LocalSave.SetString("Device_uniqueID", uid); } Device.uniqueID = uid; Debug.Log(Device.uniqueID); Yj_AppID = string.Empty; Yj_SpID = string.Empty; ThirdPartVersion = string.Empty; RegistrationID = string.Empty; AssetCopyFinished = false; ChannelPlatform = E_ChannelPlatform.Free; NetworkType = NetworkReachability.NotReachable; BatteryLevel = 100; #if !UNITY_EDITOR if (InitFinished) { return; } #if UNITY_ANDROID var builtinAssetsCopyFinishVersion = LocalSave.GetString("BuiltInAssetCopyCompleted_Android"); if (string.IsNullOrEmpty(builtinAssetsCopyFinishVersion)) { builtinAssetCopyFinished = false; } else { builtinAssetCopyFinished = VersionConfig.Get().version == builtinAssetsCopyFinishVersion; } #endif #if UNITY_IOS || UNITY_STANDALONE var builtinAssetsCopyFinishVersion = LocalSave.GetString("BuiltInAssetCopyCompleted_IOSorStandalone"); if (string.IsNullOrEmpty(builtinAssetsCopyFinishVersion)) { builtinAssetCopyFinished = false; } else { builtinAssetCopyFinished = VersionConfig.Get().version == builtinAssetsCopyFinishVersion; } var assetsCopyFinishVersion = LocalSave.GetString("AssetCopyCompleted_IOSorStandalone"); 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; m_Json["appID"] = VersionConfig.Get().appId; m_Json["gameID"] = VersionConfig.Get().gameId; SendMessageToSDK(m_Json); #endif StartCoroutine("ProcessNetworkStatus"); } 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 new WaitForSeconds(1f); // yield return WaitingForSecondConst.WaitMS1000; } } #region 业务层定义相关逻辑 public void InstallAPK(string path) { if (Application.platform == RuntimePlatform.Android) { var dllPath1 = ResourcesPath.Instance.ExternalStorePath + "Assembly-CSharp-firstpass.dll"; if (File.Exists(dllPath1)) { File.Delete(dllPath1); } var dllPath2 = ResourcesPath.Instance.ExternalStorePath + "Assembly-CSharp.dll"; if (File.Exists(dllPath2)) { File.Delete(dllPath2); } } m_Json.Clear(); m_Json["code"] = CodeU2A.InstallAPK; m_Json["path"] = path; SendMessageToSDK(m_Json); } //0 :拷贝所有资源 1:拷贝Config public void CopyAsset(int copyType = 0) { if (AssetCopyFinished) { return; } m_Json.Clear(); m_Json["code"] = CodeU2A.CopyAsset; m_Json["copyType"] = copyType; SendMessageToSDK(m_Json); } public void CopyOneAsset(string relationPath) { m_Json.Clear(); m_Json["code"] = CodeU2A.CopyOneAsset; m_Json["fileName"] = relationPath; 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() { m_Json.Clear(); m_Json["code"] = CodeU2A.MakeKeyAndVisible; SendMessageToSDK(m_Json); } public void SyncClientPackageID() { #if UNITY_ANDROID m_Json.Clear(); m_Json["code"] = CodeU2A.ClientPackage; m_Json["clientPkgID"] = VersionConfig.Get().clientPackageFlag; SendMessageToSDK(m_Json); #endif } //申请Android 权限 public void RequestAndroidPermission(string permission, Action callBack) { onPermissionCallBack += callBack; m_Json.Clear(); m_Json["code"] = CodeU2A.RequestPermission; m_Json["permission"] = permission; SendMessageToSDK(m_Json); } //申请Android 权限 启动时 public void RequestAndroidPermissionStart() { m_Json.Clear(); m_Json["code"] = CodeU2A.RequestPermissionStart; SendMessageToSDK(m_Json); } //跳转应用商店 public void GoToAppStore(string url, string marketPkg = "") { m_Json.Clear(); m_Json["code"] = CodeU2A.GoToAppStore; m_Json["marketPkg"] = marketPkg; m_Json["url"] = url; SendMessageToSDK(m_Json); } #endregion #region 处理与SDK交互的底层方法 public static AndroidJavaObject GetApplicationContext() { using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject jo = jc.GetStatic("currentActivity")) { return jo.Call("getApplicationContext"); } } } public string GetSplicePackageID() { var _result = "default"; switch (Application.platform) { case RuntimePlatform.Android: _result = "android"; break; case RuntimePlatform.IPhonePlayer: _result = "ios";//ios平台固定返回ios break; } return _result; } private void SendMessageToSDK(JsonData json) { #if !UNITY_EDITOR #if UNITY_ANDROID using (AndroidJavaClass H2engineSDK = new AndroidJavaClass("com.secondworld.sdk.UnityMsgHandler")) { H2engineSDK.CallStatic("onUnityMessage", json.ToJson()); } #elif UNITY_IOS AotSdkUtility.IOSUniyMessageHandle(json.ToJson()); #elif UNITY_STANDALONE InitFinished=true; #endif #endif } public void HandleMsgWithSDK(string jsonString) { // Debug.Log("收到SDK发来的信息: " + jsonString); // var _json = JsonMapper.ToObject(jsonString); // var _code = (int)_json["code"]; // switch (_code) // { // case CodeA2U.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(); // if (_json["imei"] != null) // { // Device.imei = _json["imei"].ToString(); // } // else // { // Device.imei = Device.uniqueID; // } // 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; // var _dict = _json as IDictionary; // if (_dict != null && _dict.Contains("channelPlatform")) // { // var _channelPlatform = _json["channelPlatform"].ToString(); // if (!string.IsNullOrEmpty(_channelPlatform)) // { // if (_channelPlatform.Equals("hygame")) // { // ChannelPlatform = E_ChannelPlatform.Hy; // } // else if (_channelPlatform.Equals("quick")) // { // ChannelPlatform = E_ChannelPlatform.Quick; // } // else if (_channelPlatform.Equals("hyyn")) // { // ChannelPlatform = E_ChannelPlatform.newyn; // } // else if (_channelPlatform.Equals("hygtgame")) // { // ChannelPlatform = E_ChannelPlatform.hygt; // } // else if (_channelPlatform.Equals("hyenglish")) // { // ChannelPlatform = E_ChannelPlatform.en; // } // } // } // //Sdk 可能会修改渠道信息,所以需要重新获取 // if (_dict.Contains("yj_appid")) // { // Yj_AppID = _json["yj_appid"].ToString(); // } // if (_dict.Contains("yj_spid")) // { // Yj_SpID = _json["yj_spid"].ToString(); // } // if (_dict.Contains("banhao")) // { // Yj_BanHao = _json["banhao"].ToString(); // } // break; // case CodeA2U.PushClientID: // RegistrationID = _json["clientID"].ToString(); // break; // case CodeA2U.ExternalStorage: // DeviceRootPath = _json["path"].ToString(); // break; // case CodeA2U.PermissionCallBack: // { // var state = (int)_json["state"]; // var permission = (string)_json["permission"]; // onPermissionCallBack?.Invoke(permission, state); // onPermissionCallBack = null; // break; // } // case CodeA2U.FreePlatformInitOk: // if (onFreePlatformInitOk != null) // { // onFreePlatformInitOk(); // } // break; // case CodeA2U.FreePlatformInitFail: // if (onFreePlatformInitFail != null) // { // onFreePlatformInitFail(); // } // break; // case CodeA2U.FreePlatformRegisterOk: // // HandleFreePlatformRegisteOk(_json); // OperationLogCollect.Instance.RecordEvent(5); // var values = new JsonData(); // if (_json.Keys.Contains("reg_type")) // values["af_registration_method"] = _json["reg_type"]; // break; // case CodeA2U.FreePlatformLoginOk: // HandleFreePlatformLoginOk(_json["info"]); // OperationLogCollect.Instance.RecordEvent(6); // break; // case CodeA2U.FreePlatformLoginFail: // if (onFreePlatformLoginFail != null) // { // onFreePlatformLoginFail(); // } // break; // case CodeA2U.FreePlatformLogoutOk: // if (onFreePlatformLogoutOk != null) // { // onFreePlatformLogoutOk(); // } // FreePlatformInfo = null; // break; // case CodeA2U.FreePlatformSwitchAccountOk: // BuildFreePlatformInfo(_json["info"]); // if (onFreePlatformLogoutOk != null) // { // onFreePlatformLogoutOk(); // } // FreePlatformInfo = null; // break; // case CodeA2U.FreePlatformLogoutFail: // if (onFreePlatformLogoutFail != null) // { // onFreePlatformLogoutFail(); // } // break; // case CodeA2U.FreePlatformPayOk: // if (onFreePlatformPayOk != null) // { // onFreePlatformPayOk(); // } // //SnxxzGame.Instance.StartCoroutine(DelayQueryRecharge()); // break; // case CodeA2U.FreePlatformPayFail: // if (onFreePlatformPayFail != null) // { // onFreePlatformPayFail(); // } // break; // case CodeA2U.FreePlatformPayCancel: // if (onFreePlatformPayCancel != null) // { // onFreePlatformPayCancel(); // } // break; // case CodeA2U.ShareCallBack: // { // var state = int.Parse(_json["state"].ToString()); // if (state == CallBackState.Success) // LocalSave.SetInt("ShareToFBDay" + PlayerDatas.Instance.baseData.PlayerID, TimeUtility.ServerNow.DayOfYear); // onShareFBResult?.Invoke(); // break; // } // case CodeA2U.ExitGame: // if (ChannelPlatform == E_ChannelPlatform.Free) // { // vnxbqy.UI.WindowCenter.Instance.Open(); // } // else // { // //默认都是退出游戏 // Application.Quit(); // } // break; // } // onSdkMsg?.Invoke(_code, _json); } #endregion #region 交互相关约定编号 //回调的相关状态 public static class CallBackState { public const int Cancel = 0; public const int Success = 1; public const int Error = 2; } public static class CodeA2U { #region 基础sdk_code /** * 资源拷贝完成 */ public const int AssetCopyFinished = 0; /** * 电量改变 */ public const int BatteryLevel = 1; /** * 充电状态改变 */ public const int BatteryCharging = 2; /** * 回调sdk逻辑完毕 * */ public const int SdkInitComplete = 3; /** * 回调android设备信息 * */ public const int DeviceInfo = 4; /** * 回调推送的独立id * */ public const int PushClientID = 5; /** * 回调外部存储根目录地址 */ public const int ExternalStorage = 6; /** * 触发了退出游戏逻辑, 打开二次确认界面 */ public const int ExitGame = 7; /** * 权限申请结果 */ public const int PermissionCallBack = 8; #endregion #region 自由sdk_code public const int FreePlatformInitOk = 100; public const int FreePlatformInitFail = 101; public const int FreePlatformLoginOk = 102; public const int FreePlatformLoginFail = 103; public const int FreePlatformLoginCancel = 104; public const int FreePlatformLogoutOk = 105; public const int FreePlatformLogoutFail = 106; public const int FreePlatformSwitchAccountOk = 107; public const int FreePlatformPayOk = 108; public const int FreePlatformPayFail = 109; public const int FreePlatformPayCancel = 110; public const int FreePlatformRegisterOk = 111; public const int ShareCallBack = 112; public const int PingfenCallBack = 113; //评分回调 和 GotoShopOK 不一样 具体看使用区分 public const int GotoShopOK = 115; //前往商店成功 public const int GotoFBOK = 116; #endregion } private static class CodeU2A { /** * 执行资源拷贝 */ public const int CopyAsset = 0; /** * 执行开始电量改变,充电状态改变监听 */ public const int BatteryListenStart = 1; /** * 执行停止电量改变,充电状态改变监听 */ public const int BatteryListenStop = 2; /** * 获取唯一识别码 */ public const int UniqueID = 3; /** * 申请在AndroidManifest文件中 */ 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; public const int CopyOneAsset = 12; //打开应用商店 public const int GoToAppStore = 13; // 启动时申请权限,申请规则sdk决定 public const int RequestPermissionStart = 14; /** * 自由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 CreateRole = 106; public const int RoleLogin = 107; public const int RoleLevelUp = 108; public const int TencentLogin = 109; public const int DownloadStart = 110; public const int DownloadEnd = 111; public const int ShareToFaceBook = 112; public const int GoToPingfen = 113; //前往评分 和 GotoShop = 121; 有区别 public const int ShowAccountView = 114; public const int RoleLoginOut = 119; //角色登出 public const int FansHouse = 120; //粉丝屋 论坛等 public const int GotoShop = 121; //前往商店 public const int TrackEvent = 122; //自定义事件 /** * 极光推送 * */ public const int JPushAddLocalMessage = 200; public const int JPushRemoveLocalMessage = 201; /** * IOS特殊需求 */ public const int MakeKeyAndVisible = 300; /** * ClientPackage向sdk发送分包id */ public const int ClientPackage = 400; /** * 发送注册事件 */ public static int SendRegistEvent = 500; /** * 发送注册事件 */ public static int SendLoginEvent = 600; /** * 隐藏悬浮窗 */ public static int HideFloatIcon = 700; /** * 显示悬浮窗 */ public static int ShowFloatIcon = 701; } #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 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 onShareFBResult; public class FP_LoginOk { public string account;//必选,账号 public string token;//必选 public string tokenExpire; public int phone; public int accountID; public string gameId; public string timeStamp; public string sessionID; public string yjAppId; public string yjSdkId; public string qkUserName; // 目前当做原始UID使用,因为游戏中会统一小写 } 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 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("currentActivity"); _jo.Call("BindPhone"); #endif } /// /// 自由SDK登陆 /// public void FreePlatformLogin() { m_Json.Clear(); m_Json["code"] = CodeU2A.FreePlatformLogin; SendMessageToSDK(m_Json); } public void TencentLogin(string param) { #if !UNITY_EDITOR m_Json.Clear(); m_Json["code"] = CodeU2A.TencentLogin; if (!string.IsNullOrEmpty(param)) { m_Json["param"] = param; } SendMessageToSDK(m_Json); #endif } /// /// 自由SDK登出 /// public void FreePlatformLoginout() { #if !UNITY_EDITOR m_Json.Clear(); m_Json["code"] = CodeU2A.FreePlatformLogout; SendMessageToSDK(m_Json); if (ChannelPlatform == E_ChannelPlatform.Yl) { FreePlatformLogin(); } #endif } public void ShowAccountView() { #if !UNITY_EDITOR m_Json.Clear(); m_Json["code"] = CodeU2A.ShowAccountView; SendMessageToSDK(m_Json); if (ChannelPlatform == E_ChannelPlatform.Yl) { FreePlatformLogin(); } #endif } public void FreePlatformSwitchAccount() { #if UNITY_ANDROID AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject _jo = _jc.GetStatic("currentActivity"); _jo.Call("SwitchAccount"); #endif } private Dictionary m_PaymentTable = new Dictionary(); private string m_EncodeKey = "03sujm7gerywdvyd5vkkk772rs4by230"; //private IEnumerator DelayQueryRecharge() //{ // yield return WaitingForSecondConst.WaitMS3000; // var _package = new CA806_tagCMQueryRecharge(); // GameNetSystem.Instance.SendInfo(_package); //} /// /// 自由SDK支付 fixed sdk 支付逻辑修改 /// /// public void FreePlatformPay(string title, float money, string cpInfo) { // 提示是否使用代金券 // var gameCash = UIHelper.GetAllVourcher(); // bool isBuyGameCash = false; //代金券本身的充值不能用代金券购买 造成循环 // int ctgID = ModelCenter.Instance.GetModel().orderInfoToCTGID[cpInfo]; // if (ctgID != 0) // { // isBuyGameCash = CTGConfig.Get(ctgID).PayType == 17; // } // if (!isBuyGameCash && gameCash >= money * 100 && !LoginAwardModel.rechargeLimit.Contains(ctgID)) // { // WindowCenter.Instance.Close(); // if (DayRemind.Instance.GetDayRemind(DayRemind.DJQTip)) // { // var pack = new CA125_tagCMCoinBuyOrderInfo(); // pack.AppID = VersionConfig.Get().appId; // pack.AppIDLen = (byte)pack.AppID.Length; // pack.OrderInfo = cpInfo; // pack.OrderInfoLen = (byte)pack.OrderInfo.Length; // GameNetSystem.Instance.SendInfo(pack); // } // else // { // ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("GameCashRule1", money), Language.Get("TodayNoNotify"), (bool isOk, bool isToggle) => // { // if (isOk) // { // var pack = new CA125_tagCMCoinBuyOrderInfo(); // pack.AppID = VersionConfig.Get().appId; // pack.AppIDLen = (byte)pack.AppID.Length; // pack.OrderInfo = cpInfo; // pack.OrderInfoLen = (byte)pack.OrderInfo.Length; // GameNetSystem.Instance.SendInfo(pack); // } // if (isToggle) // { // DayRemind.Instance.SetDayRemind(DayRemind.DJQTip, true); // } // }); // } // } // else // { // FreePlatformPayEx(title, money, cpInfo); // } } public void FreePlatformPayEx(string title, float money, string cpInfo) { // OrderInfoConfig orderInfo = null; // VipModel vipModel = ModelCenter.Instance.GetModel(); // if (vipModel.orderInfoToCTGID.ContainsKey(cpInfo) && vipModel.orderInfoToCTGID[cpInfo] != 0) // { // vipModel.TryGetOrderInfo(vipModel.orderInfoToCTGID[cpInfo], out orderInfo); // } // else // { // var keys = OrderInfoConfig.GetKeys(); // for (int i = 0; i < keys.Count; i++) // { // orderInfo = OrderInfoConfig.Get(keys[i]); // if (orderInfo != null && orderInfo.OrderInfo == cpInfo) // { // break; // } // } // } // //#if !(UNITY_IOS || UNITY_IPHONE) // // string storeOrderInfo = orderInfo.StoreOrderInfo; // //#else // // string storeOrderInfo = orderInfo.StoreOrderInfo2; // //#endif // #if UNITY_EDITOR // Debug.LogFormat("充值: {0}-{1}-{2}", title, money, cpInfo); // return; // #endif // m_Json.Clear(); // m_Json["code"] = CodeU2A.FreePlatformPay; // m_Json["orderId"] = DateTime.Now.ToString("yyyyMMddHHmmss") + UnityEngine.Random.Range(100000, 999999).ToString(); // m_Json["mount"] = money.ToString(); // m_Json["cpInfo"] = cpInfo; // //m_Json["storeOrderInfo"] = storeOrderInfo; // m_Json["title"] = title; // m_Json["roleID"] = PlayerDatas.Instance.baseData.PlayerID; // m_Json["roleName"] = PlayerDatas.Instance.baseData.PlayerName; // m_Json["level"] = PlayerDatas.Instance.baseData.LV.ToString(); // m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag; // m_Json["serverName"] = ServerListCenter.Instance.currentServer.name; // m_Json["familyName"] = PlayerDatas.Instance.baseData.FamilyName; // m_Json["job"] = PlayerDatas.Instance.baseData.Job.ToString(); // m_Json["money"] = PlayerDatas.Instance.baseData.diamond.ToString(); // m_Json["gameName"] = VersionConfig.Get().productName; // m_Json["vipLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString(); // m_Json["createTime"] = TimeUtility.CreateSeconds.ToString(); // m_Json["familyID"] = PlayerDatas.Instance.baseData.FamilyId.ToString(); // m_Json["fightPower"] = PlayerDatas.Instance.baseData.FightPoint.ToString(); // #if UNITY_IOS // m_Json["identifier"] = VersionConfig.Get().bundleIdentifier; // #endif // SendMessageToSDK(m_Json); } /// /// 分享到facebook /// /// public void ShareToFaceBook(int type) { // Debug.Log("越南分享"); // m_Json.Clear(); // m_Json["code"] = CodeU2A.ShareToFaceBook; // m_Json["type"] = type; // SendMessageToSDK(m_Json); } /// /// 去商店评论 /// public void GoToPingfen() { // Debug.Log("越南评分"); // m_Json.Clear(); // m_Json["code"] = CodeU2A.GoToPingfen; // SendMessageToSDK(m_Json); } //前往商店 public void GoToShop() { // m_Json.Clear(); // m_Json["code"] = CodeU2A.GotoShop; // SendMessageToSDK(m_Json); } /** * @param context * @param event 事件名 * @param value 事件值,如果没有可以传"" * @param isRepeatReport 是否重复上报。根据运营需求是否排重上报,true可以重复上报,false仅上报一次 */ public void TraceEvent(string eventName, string value, bool isRepeatReport) { // Debug.Log("越南事件汇报 :" + eventName); // m_Json.Clear(); // m_Json["code"] = CodeU2A.TrackEvent; // m_Json["eventName"] = eventName; // m_Json["value"] = value; // m_Json["isRepeatReport"] = isRepeatReport; // SendMessageToSDK(m_Json); } 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(); // } // else // { // FreePlatformInfo.tokenExpire = ""; // } // if (_iDict.Contains("account")) // { // FreePlatformInfo.account = json["account"].ToString(); // } // if (_iDict.Contains("account_id")) // { // int.TryParse(json["account_id"].ToString(), out FreePlatformInfo.accountID); // } // if (_iDict.Contains("session_id")) // { // FreePlatformInfo.sessionID = (string)json["session_id"]; // } // if (_iDict.Contains("game_id")) // { // FreePlatformInfo.gameId = (string)json["game_id"]; // } // if (_iDict.Contains("timeStamp")) // { // FreePlatformInfo.timeStamp = (string)json["timeStamp"]; // } // if (_iDict.Contains("userName")) // { // FreePlatformInfo.qkUserName = json["userName"].ToString(); // } // FreePlatformInfo.phone = 0; } private void HandleFreePlatformRegisteOk(JsonData json) { // BuildFreePlatformInfo(json); } private void HandleFreePlatformLoginOk(JsonData data) { // BuildFreePlatformInfo(data); // Debug.LogFormat("sdk登录成功:{0}", data.ToJson()); // if (onFreePlatformLoginOk != null) // { // onFreePlatformLoginOk(FreePlatformInfo); // } } // public void OnServerChargeOk(HA106_tagMCCoinToGoldReport pack) // { // string orderID = pack.OrderID; // uint coin = pack.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); // } public void SendRegistEvent(bool _ok, string _result) { if (_ok) { if (!_result.Equals("0")) { m_Json.Clear(); m_Json["code"] = CodeU2A.SendRegistEvent; SendMessageToSDK(m_Json); } } } public void SendLoginEvent() { m_Json.Clear(); m_Json["code"] = CodeU2A.SendLoginEvent; SendMessageToSDK(m_Json); } public void SendHideFloatWin() { m_Json.Clear(); m_Json["code"] = CodeU2A.HideFloatIcon; SendMessageToSDK(m_Json); } public void SendShowFloatWin() { m_Json.Clear(); m_Json["code"] = CodeU2A.ShowFloatIcon; SendMessageToSDK(m_Json); } public void CreateRoleOk(string roleID, string roleName, string time) { // m_Json.Clear(); // m_Json["code"] = CodeU2A.CreateRole; // m_Json["roleID"] = roleID; // m_Json["roleName"] = roleName; // m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag; // m_Json["serverName"] = ServerListCenter.Instance.currentServer.name; // m_Json["familyName"] = PlayerDatas.Instance.baseData.FamilyName; // m_Json["level"] = "1"; // m_Json["job"] = PlayerDatas.Instance.baseData.Job.ToString(); // m_Json["money"] = PlayerDatas.Instance.baseData.diamond.ToString(); // m_Json["gameName"] = VersionConfig.Get().productName; // m_Json["vipLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString(); // m_Json["createTime"] = time; // m_Json["familyID"] = PlayerDatas.Instance.baseData.FamilyId.ToString(); // m_Json["fightPower"] = PlayerDatas.Instance.baseData.FightPoint.ToString(); // SendMessageToSDK(m_Json); } public void DownloadStart() { m_Json.Clear(); m_Json["code"] = CodeU2A.DownloadStart; SendMessageToSDK(m_Json); } public void DownloadEnd() { m_Json.Clear(); m_Json["code"] = CodeU2A.DownloadEnd; SendMessageToSDK(m_Json); } public void RoleLogin() { // m_Json.Clear(); // m_Json["code"] = CodeU2A.RoleLogin; // m_Json["roleID"] = PlayerDatas.Instance.baseData.PlayerID.ToString(); // m_Json["roleName"] = PlayerDatas.Instance.baseData.PlayerName; // m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag; // m_Json["serverName"] = ServerListCenter.Instance.currentServer.name; // m_Json["familyName"] = PlayerDatas.Instance.baseData.FamilyName; // m_Json["level"] = PlayerDatas.Instance.baseData.LV; // m_Json["job"] = PlayerDatas.Instance.baseData.Job.ToString(); // m_Json["money"] = PlayerDatas.Instance.baseData.diamond.ToString(); // m_Json["gameName"] = VersionConfig.Get().productName; // m_Json["vipLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString(); // m_Json["createTime"] = TimeUtility.CreateSeconds.ToString(); // m_Json["familyID"] = PlayerDatas.Instance.baseData.FamilyId.ToString(); // m_Json["fightPower"] = PlayerDatas.Instance.baseData.FightPoint.ToString(); // SendMessageToSDK(m_Json); } public void RoleLevelUp() { m_Json.Clear(); m_Json["code"] = CodeU2A.RoleLevelUp; m_Json["roleID"] = PlayerDatas.Instance.PlayerId.ToString(); m_Json["roleName"] = PlayerDatas.Instance.baseData.PlayerName; m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag; m_Json["serverName"] = ServerListCenter.Instance.currentServer.name; m_Json["familyName"] = PlayerDatas.Instance.baseData.FamilyName; m_Json["level"] = PlayerDatas.Instance.baseData.LV; m_Json["job"] = PlayerDatas.Instance.baseData.Job.ToString(); m_Json["money"] = PlayerDatas.Instance.baseData.diamond.ToString(); m_Json["gameName"] = VersionConfig.Get().productName; m_Json["vipLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString(); m_Json["levelUpTime"] = TimeUtility.AllSeconds.ToString(); m_Json["createTime"] = TimeUtility.CreateSeconds.ToString(); m_Json["familyID"] = PlayerDatas.Instance.baseData.FamilyId.ToString(); m_Json["fightPower"] = PlayerDatas.Instance.baseData.FightPoint.ToString(); SendMessageToSDK(m_Json); } public void RoleLoginOut() { if (PlayerDatas.Instance.PlayerId == 0) return; if (!DTC0403_tagPlayerLoginLoadOK.finishedLogin) return; m_Json.Clear(); m_Json["code"] = CodeU2A.RoleLoginOut; m_Json["roleID"] = PlayerDatas.Instance.PlayerId.ToString(); m_Json["roleName"] = PlayerDatas.Instance.baseData.PlayerName; m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag; m_Json["serverName"] = ServerListCenter.Instance.currentServer.name; m_Json["familyName"] = PlayerDatas.Instance.baseData.FamilyName; m_Json["level"] = PlayerDatas.Instance.baseData.LV; m_Json["job"] = PlayerDatas.Instance.baseData.Job.ToString(); m_Json["money"] = PlayerDatas.Instance.baseData.diamond.ToString(); m_Json["gameName"] = VersionConfig.Get().productName; m_Json["vipLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString(); m_Json["levelUpTime"] = TimeUtility.AllSeconds.ToString(); m_Json["createTime"] = TimeUtility.CreateSeconds.ToString(); m_Json["familyID"] = PlayerDatas.Instance.baseData.FamilyId.ToString(); m_Json["fightPower"] = PlayerDatas.Instance.baseData.FightPoint.ToString(); SendMessageToSDK(m_Json); } public void GotoFansHouse() { Debug.Log("越南点赞"); m_Json.Clear(); m_Json["code"] = CodeU2A.FansHouse; SendMessageToSDK(m_Json); } #endregion #region 插件相关 #endregion #region 极光推送相关 public void GeTui_SendLocalMessage(JsonData jsonData) { return; Debug.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) { return; Debug.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 }