using Thousandto.CoreSDK.Event; using UnityEngine; using EventManager = UnityEngine.Gonbest.MagicCube.EventManager; using JSONNode = UnityEngine.Gonbest.MagicCube.JSONNode; using JSON = UnityEngine.Gonbest.MagicCube.JSON; using JSONClass = UnityEngine.Gonbest.MagicCube.JSONClass; using JSONData = UnityEngine.Gonbest.MagicCube.JSONData; using UnityEngine.Gonbest.MagicCube; using System.Collections.Generic; namespace Thousandto.CoreSDK { /// /// SDK功能类:通过请求类型与客户端进行交互,避免多个函数来回访问 /// SDK与客户端的交互主要通过三个函数来实现: /// 1. CallFunc(调用Android的ClientToSDK函数) /// 2. SetDatas(数据统计SDKStatistics.StatisticalEvent()) /// 3. Callback(SDK_Object接收Android发送过来的消息) /// 以后要更新SDK,只需要更新枚举文件FuncellEnum,同时实现新增枚举对应方法,android端不用改动 /// public abstract class FuncellSDK { //sdk初始化是否完成 #if UNITY_IPHONE public bool SDKInitFinish = false; #else public bool SDKInitFinish = false; #endif //是否使用sdk public bool UseSDK = false; private bool _isCommitToAppstore = false; public string PlatformId = ""; private static FuncellSDK _instance; public FuncellSDK() { } public static FuncellSDK Instance { get { if(_instance == null) { #if UNITY_EDITOR _instance = new FuncellSDKDefault(); #elif UNITY_ANDROID _instance = new FuncellSDKAndroid(); #elif UNITY_IPHONE _instance = new FuncellSDKIOS(); #elif UNITY_STANDALONE_WIN _instance = new FuncellSDKPC(); #else _instance = new FuncellSDKDefault(); #endif } //注册客户端添加蓝钻的回调 EventManager.SharedInstance.RegFixEventHandle(SDKEventDefine.SDK_ENENT_ADD_GOLD_CALLBACK, _instance.OnRechargeSuccess); return _instance; } } #region 抽象函数,需要实现 //调用sdk的方法 protected abstract void CallFunc(RequestOptType funcType, params string[] args); public void InstallApp(string pathOrUrl) { UnityEngine.Application.OpenURL(pathOrUrl); } public virtual void ReInitSDK() { } public virtual bool IsMusicPlaying() { return false; } public virtual void CopyToClipboard( string text ) { } //取相片或拍照 public virtual void GetPhoto(int type, string path, int width, int height) { } /// /// 判断当前手机是否是全面屏 /// /// public virtual bool HasNotchInScreen() { return false; } /// /// 是否实名制了 /// /// public virtual bool IsRealNameAuthorized() { return false; } /// /// 调用SDK的实名制界面 /// public virtual void DoRealNameAuthority(string name, string idcard) { } /// /// 获取当前网络类型 /// /// public virtual string GetNetworkType() { return null; } /// /// 重启App /// public virtual void ReStartGame() { } public virtual Dictionary GetPCParams() { return new Dictionary(); } #endregion #region 登陆、登出、切换账号、支付、退出、个人中心 /// /// 显示个人中心 /// public void ShowAccountCenter() { CallFunc(RequestOptType.ReqShowAccountCenter); } /// /// 调用sdk的登陆接口 /// public void SDKLogin() { Debug.LogError("SDKLogin......"); CallFunc(RequestOptType.ReqLogin); } /// /// 登出sdk账号 /// public void SDKLogout() { CallFunc(RequestOptType.ReqLogout); } public void SwitchAccount() { CallFunc(RequestOptType.ReqSwitchLogin); } private void DoExitGame() { CallFunc(RequestOptType.ReqExit); } /// /// 调用sdk的退出游戏接口,有些sdk有自己的退出界面 /// /// public bool ExitGame() { if (!UseSDK) { EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_EXIT_CALL, null); return true; } DoExitGame(); return true; } /// /// sdk的支付接口 /// /// /// /// /// /// /// public void Pay(string itemId, string itemName, int buyNum, float price, string goodsDealType, string payNotifyUrl, string rechargeType, string extension, int cfgId, string orderNo) { SDKCacheData.ItemType = rechargeType; SDKCacheData.ItemId = itemId; SDKCacheData.ItemName = itemName; SDKCacheData.BuyNum = buyNum.ToString(); SDKCacheData.ItemPrice = price.ToString(); SDKCacheData.ItemDes = SDKCacheData.ItemName; SDKCacheData.PayCfgId = cfgId.ToString(); SDKCacheData.GoodsDealType = goodsDealType; SDKCacheData.PayNotifyUrl = payNotifyUrl; SDKCacheData.OrderNo = orderNo; if ( !string.IsNullOrEmpty(extension) ) { SDKCacheData.Extension = extension; } DoPay(); } /// /// 请求支付 /// /// 对应android端FuncellRoleInfo类,以方法名_值的格式构造json数据 /// 对应android端FuncellPayParams类,以方法名_值的格式构造json数据 public void DoPay() { JSONClass payData = new JSONClass(); // 角色信息 payData.Add( "roleId", new JSONData( SDKCacheData.RoleID ) ); payData.Add( "roleName", new JSONData( SDKCacheData.RoleName ) ); payData.Add( "roleLevel", new JSONData( SDKCacheData.RoleLevel ) ); payData.Add( "vip", new JSONData( SDKCacheData.RoleRealmLv ) ); payData.Add( "coinNum", new JSONData( SDKCacheData.RoleGoldBalance ) ); // 服务器信息 payData.Add( "serverId", new JSONData( SDKCacheData.ServerID ) ); payData.Add( "serverName", new JSONData( SDKCacheData.ServerName ) ); // 购买信息 payData.Add( "buyNum", new JSONData( SDKCacheData.BuyNum ) ); payData.Add( "price", new JSONData( SDKCacheData.ItemPrice ) ); payData.Add( "productId", new JSONData( SDKCacheData.ItemId ) ); payData.Add( "productDesc", new JSONData( SDKCacheData.ItemName ) ); payData.Add( "productName", new JSONData( SDKCacheData.ItemName ) ); // 配置表的ID payData.Add( "productCode", new JSONData( SDKCacheData.PayCfgId)); // 发货地址 payData.Add( "payNotifyUrl", new JSONData(SDKCacheData.PayNotifyUrl)); //给SDK的充值类型 payData.Add( "goodsDealType", new JSONData( SDKCacheData.GoodsDealType)); // 其它参数 payData.Add( "extension", new JSONData( SDKCacheData.Extension ) ); payData.Add( "orderno", new JSONData( SDKCacheData.OrderNo) ); CallFunc( RequestOptType.ReqPay, payData.ToString() ); } #endregion #region 数据统计: 创建账号、创建角色、服务器信息、登陆信息、角色升级、充值 public void EventCreatRole() { JSONClass jn = new JSONClass(); jn.Add("serverno", new JSONData(SDKCacheData.ServerID)); jn.Add("role_level", new JSONData(SDKCacheData.RoleLevel)); jn.Add("role_id", new JSONData(SDKCacheData.RoleID)); jn.Add("role_name", new JSONData(SDKCacheData.RoleName)); jn.Add("server_name", new JSONData(SDKCacheData.ServerName)); jn.Add("role_gamegold_balance", new JSONData(SDKCacheData.RoleGoldBalance)); jn.Add("role_gameunion_name", new JSONData(SDKCacheData.RoleGuidName)); jn.Add("role_vip_level", new JSONData(SDKCacheData.RoleVipLevel)); jn.Add("role_creat_time", new JSONData(SDKCacheData.RoleCreateTime)); jn.Add("role_upgrade_time", new JSONData(SDKCacheData.RoleCreateTime)); jn.Add("role_recharge_balance", new JSONData(SDKCacheData.RoleRechargeBalance)); jn.Add("gameVersion", new JSONData(SDKCacheData.AppVersion)); jn.Add("roleCombat", new JSONData(SDKCacheData.FightPower)); jn.Add("roleSex", new JSONData(SDKCacheData.RoleSex)); jn.Add("mapId", new JSONData(SDKCacheData.MapId)); jn.Add("loginType", new JSONData(SDKCacheData.LoginType)); SDKStatistics.Instance.StatisticalEvent(DataTypes.DATA_CREATE_ROLE, jn.ToString()); } public void EventServerInfo() { JSONClass jn = new JSONClass(); jn.Add("serverno", new JSONData(SDKCacheData.ServerID)); jn.Add("role_level", new JSONData(SDKCacheData.RoleLevel)); jn.Add("role_id", new JSONData(SDKCacheData.RoleID)); jn.Add("role_name", new JSONData(SDKCacheData.RoleName)); jn.Add("server_name", new JSONData(SDKCacheData.ServerName)); jn.Add("role_gamegold_balance", new JSONData(SDKCacheData.RoleGoldBalance)); jn.Add("role_gameunion_name", new JSONData(SDKCacheData.RoleGuidName)); jn.Add("role_vip_level", new JSONData(SDKCacheData.RoleVipLevel)); jn.Add("role_creat_time", new JSONData(SDKCacheData.RoleCreateTime)); jn.Add("role_upgrade_time", new JSONData(SDKCacheData.RoleLevelUpTime)); jn.Add("role_recharge_balance", new JSONData(SDKCacheData.RoleRechargeBalance)); jn.Add("gameVersion", new JSONData(SDKCacheData.AppVersion)); jn.Add("roleCombat", new JSONData(SDKCacheData.FightPower)); jn.Add("roleSex", new JSONData(SDKCacheData.RoleSex)); jn.Add("mapId", new JSONData(SDKCacheData.MapId)); jn.Add("loginType", new JSONData(SDKCacheData.LoginType)); SDKStatistics.Instance.StatisticalEvent(DataTypes.DATA_ENTER_GAME, jn.ToString()); SDKStatistics.Instance.StatisticalEvent(DataTypes.DATA_SERVER_ROLE_INFO, jn.ToString()); // 统计 DealMessage((int)PLATFORM_DEAL_TYPE.PDT_WEBTOTAL, "Statistic"); //进入游戏 DealMessage((int)PLATFORM_DEAL_TYPE.PDT_TOTAL_ENTERGAME, "enterGame"); } public void EventLogin() { JSONClass jn = new JSONClass(); jn.Add("serverno", new JSONData(SDKCacheData.ServerID)); SDKStatistics.Instance.StatisticalEvent(DataTypes.DATA_LOGIN, jn.ToString()); } //退出游戏的统计 public void EventExit() { JSONClass jn = new JSONClass(); jn.Add("role_level", new JSONData(SDKCacheData.RoleLevel)); jn.Add("role_id", new JSONData(SDKCacheData.RoleID)); jn.Add("role_name", new JSONData(SDKCacheData.RoleName)); jn.Add("serverno", new JSONData(SDKCacheData.ServerID)); jn.Add("server_name", new JSONData(SDKCacheData.ServerName)); SDKStatistics.Instance.StatisticalEvent(DataTypes.DATA_EXIT_GAME, jn.ToString()); } public void EventLevelUp() { JSONClass jn = new JSONClass(); jn.Add("serverno", new JSONData(SDKCacheData.ServerID)); jn.Add("role_level", new JSONData(SDKCacheData.RoleLevel)); jn.Add("role_id", new JSONData(SDKCacheData.RoleID)); jn.Add("role_name", new JSONData(SDKCacheData.RoleName)); jn.Add("server_name", new JSONData(SDKCacheData.ServerName)); jn.Add("role_gamegold_balance", new JSONData(SDKCacheData.RoleGoldBalance)); jn.Add("role_gameunion_name", new JSONData(SDKCacheData.RoleGuidName)); jn.Add("role_vip_level", new JSONData(SDKCacheData.RoleVipLevel)); jn.Add("role_creat_time", new JSONData(SDKCacheData.RoleCreateTime)); jn.Add("role_upgrade_time", new JSONData(SDKCacheData.RoleLevelUpTime)); jn.Add("role_recharge_balance", new JSONData(SDKCacheData.RoleRechargeBalance)); jn.Add("gameVersion", new JSONData(SDKCacheData.AppVersion)); jn.Add("roleCombat", new JSONData(SDKCacheData.FightPower)); jn.Add("roleSex", new JSONData(SDKCacheData.RoleSex)); jn.Add("mapId", new JSONData(SDKCacheData.MapId)); jn.Add("loginType", new JSONData(SDKCacheData.LoginType)); SDKStatistics.Instance.StatisticalEvent(DataTypes.DATA_ROLE_LEVELUP, jn.ToString()); int playerLv = 1; if (int.TryParse(SDKCacheData.RoleLevel, out playerLv)) { //[特殊统计] //215级算是中度活跃用户 if (playerLv == 215) { JSONClass jnCustom = new JSONClass(); jnCustom.Add("custom_level_215", new JSONData(SDKCacheData.RoleLevel)); jnCustom.Add("custom_event", new JSONData("custom_level_215")); SDKStatistics.Instance.StatisticalEvent(DataTypes.CUSTOM_EVENT, jnCustom.ToString()); } //[特殊统计] //245级算是高度活跃用户 else if (playerLv == 245) { JSONClass jnCustom = new JSONClass(); jnCustom.Add("custom_level_245", new JSONData(SDKCacheData.RoleLevel)); jnCustom.Add("custom_event", new JSONData("custom_level_245")); SDKStatistics.Instance.StatisticalEvent(DataTypes.CUSTOM_EVENT, jnCustom.ToString()); } } } //[特殊统计]统计100万战力 public void EventFightPower() { JSONClass jnCustom = new JSONClass(); jnCustom.Add("serverno", new JSONData(SDKCacheData.ServerID)); jnCustom.Add("role_level", new JSONData(SDKCacheData.RoleLevel)); jnCustom.Add("role_id", new JSONData(SDKCacheData.RoleID)); jnCustom.Add("role_name", new JSONData(SDKCacheData.RoleName)); jnCustom.Add("roleCombat", new JSONData(SDKCacheData.FightPower)); jnCustom.Add("custom_power_1000000", new JSONData(SDKCacheData.FightPower)); jnCustom.Add("custom_event", new JSONData("custom_power_1000000")); SDKStatistics.Instance.StatisticalEvent(DataTypes.CUSTOM_EVENT, jnCustom.ToString()); } //[特殊统计]统计月卡和周卡的购买 public void EventWMCard(WeekMonthCard cardType) { JSONClass jnCustom = new JSONClass(); jnCustom.Add("serverno", new JSONData(SDKCacheData.ServerID)); jnCustom.Add("role_level", new JSONData(SDKCacheData.RoleLevel)); jnCustom.Add("role_id", new JSONData(SDKCacheData.RoleID)); jnCustom.Add("role_name", new JSONData(SDKCacheData.RoleName)); jnCustom.Add("roleCombat", new JSONData(SDKCacheData.FightPower)); switch (cardType) { case WeekMonthCard.CARD_WEEK: jnCustom.Add("custom_weekcard", new JSONData(WeekMonthCard.CARD_WEEK.ToString())); jnCustom.Add("custom_event", new JSONData("custom_weekcard")); break; case WeekMonthCard.CARD_MONTH: jnCustom.Add("custom_monthcard", new JSONData(WeekMonthCard.CARD_MONTH.ToString())); jnCustom.Add("custom_event", new JSONData("custom_monthcard")); break; default: break; } SDKStatistics.Instance.StatisticalEvent(DataTypes.CUSTOM_EVENT, jnCustom.ToString()); } /// /// 真正的充值成功回调,这里逻辑是这样的 /// 1. SDK充值成功之后通知游戏 /// 2. 游戏收到通知之后向服务器请求加元宝 /// 3. 服务器通知客户端元宝添加成功 /// 这里处于第3步的操作,相当于走完了整个的充值流程,可以统计真正完成的交易有多少了 /// private void OnRechargeSuccess(object obj,object sender) { string payCallbackJson = string.Empty; try { JSONClass arg1Json = new JSONClass(); arg1Json.Add("serverno", new JSONData(SDKCacheData.ServerID)); arg1Json.Add("role_level", new JSONData(SDKCacheData.RoleLevel)); arg1Json.Add("role_id", new JSONData(SDKCacheData.RoleID)); arg1Json.Add("role_name", new JSONData(SDKCacheData.RoleName)); arg1Json.Add("server_name", new JSONData(SDKCacheData.ServerName)); arg1Json.Add("role_gamegold_balance", new JSONData(SDKCacheData.RoleGoldBalance)); arg1Json.Add("role_gameunion_name", new JSONData(SDKCacheData.RoleGuidName)); arg1Json.Add("role_vip_level", new JSONData(SDKCacheData.RoleVipLevel)); arg1Json.Add("role_creat_time", new JSONData(SDKCacheData.RoleCreateTime)); arg1Json.Add("role_upgrade_time", new JSONData(SDKCacheData.RoleLevelUpTime)); arg1Json.Add("role_recharge_balance", new JSONData(SDKCacheData.RoleRechargeBalance)); arg1Json.Add("gameVersion", new JSONData(SDKCacheData.AppVersion)); arg1Json.Add("roleCombat", new JSONData(SDKCacheData.FightPower)); arg1Json.Add("roleSex", new JSONData(SDKCacheData.RoleSex)); arg1Json.Add("mapId", new JSONData(SDKCacheData.MapId)); arg1Json.Add("loginType", new JSONData(SDKCacheData.LoginType)); payCallbackJson = arg1Json.ToString(); UnityEngine.Debug.LogError("pay callback :" + payCallbackJson); //统一的统计接口,这里做充值的统计 SDKStatistics.Instance.StatisticalEvent(DataTypes.DATA_RECHARGE, payCallbackJson); } catch (System.Exception ex) { UnityEngine.Debug.LogException(ex); } } #endregion #region SDK到客户端的回调 /// /// SDK_Object用来接收Android发送过来的消息 /// /// public void Callback(string result) { //方法类型 int index = result.IndexOf('_'); string funcTypeStr = result.Substring(0, index); result = result.Substring(index + 1); //回调结果 0成功 1失败 2取消 index = result.IndexOf('_'); string resultCodeStr = result.Substring(0, index); result = result.Substring(index + 1); string jsonResult = result; CallbackType type; if (ParseEnum(funcTypeStr, out type)) { ResultCode resultCode = ResultCode.Unknown; ParseEnum(resultCodeStr, out resultCode); UnityEngine.Debug.Log(string.Format("SDK callback : type={2} code {0} json={1}", resultCode, jsonResult, type)); switch (type) { case CallbackType.InitCallback: OnSDKInitCallback(resultCode, jsonResult); break; case CallbackType.LoginCallback: OnLoginCallback(resultCode, jsonResult); break; case CallbackType.LogoutCallback: OnLogoutCallback(resultCode, jsonResult); break; case CallbackType.SwitchAccountCallback: OnSwitchAccountCallback(resultCode, jsonResult); break; case CallbackType.ExitCallback: OnExitCallback(resultCode, jsonResult); break; case CallbackType.PayCallback: OnPayCallback(resultCode, jsonResult); break; case CallbackType.ServersUrlCallback: OnServersUrlCallback(resultCode, jsonResult); break; case CallbackType.NoticeCallback: OnNoticeCallback(resultCode, jsonResult); break; case CallbackType.RealNameCallback: OnRealNameCallback(resultCode, jsonResult); break; } } } //设置SDK语言 public void SetSDKLan(string lan = "") { if(string.IsNullOrEmpty(lan)) lan = UnityEngine.Gonbest.MagicCube.FLanguage.Default; int type = 1; JSONClass jn = new JSONClass(); //1.简体,2繁体 3.英文,4.泰文,5越语 6 韩文 switch(lan) { case "CH": type = 1; break; case "TW": type = 2; break; case "EN": type = 3; break; case "TH": type = 4; break; case "VIE": type = 5; break; case "KR": type = 6; break; case "EN2": type = 3; break; case "CH2": type = 1; break; } jn.Add("type", new JSONData("" + type)); } private bool ParseEnum(string item, out T outT) { outT = default(T); if (System.Enum.IsDefined(typeof(T), item)) { outT = (T)System.Enum.Parse(typeof(T), item); return true; } return false; } public void OnLoginCallback(ResultCode resultCode, string jsonResult) { if (resultCode != ResultCode.Success) { UnityEngine.Debug.LogError("OnLoginCallback: fail code=" + resultCode); } else { //type=LoginCallback code Success json= //{ "username":"sy804753", // "userID":119, // "cpUserID":"sy804753", // "cpUserName":"", // "token":"6354b2b1dc612efec0acc422710f9e83", // "appID":51, // "channelID":168 //} EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_CALLBACK_LOGIN_SUCCESS, jsonResult); JSONNode jn = JSONNode.Parse(jsonResult); SDKCacheData.UserID = jn["userID"]; SDKCacheData.UserName = jn["username"]; //统一的统计接口,登陆统计 SDKStatistics.Instance.StatisticalEvent(DataTypes.DATA_LOGIN, jn.ToString()); } } public void OnSDKInitCallback(ResultCode resultCode, string jsonResult) { if (string.IsNullOrEmpty(jsonResult)) { UnityEngine.Debug.LogError("SDK init error; jsonResult is empty!!"); return; } UnityEngine.Debug.Log("SDK init result: " + resultCode); if (resultCode == ResultCode.Success) { SDKInitFinish = true; JSONNode node = JSON.Parse(jsonResult); SDKCacheData.ServerUrl = node["url"].Value; SDKCacheData.SecID = node["secId"].Value; SDKCacheData.SourceId = node["sourceId"].Value; SDKCacheData.DevicesId = node["deviceId"].Value; SDKCacheData.CPExtData = node["cpExtJson"].Value; string cpExtJson = node["cpExtJson"].Value; if (!string.IsNullOrEmpty(cpExtJson)) { Debug.Log("OnSDKInitCallback cpExtJson:" + cpExtJson); try { JSONNode cpDataJson = JSON.Parse(cpExtJson); //SDK获取的平台ID SDKCacheData.CPPlatformId = cpDataJson["fnpidraw"].Value; //游戏平台简称 SDKCacheData.CPPlatformGname = cpDataJson["fnptag"].Value; //游戏简称 SDKCacheData.CPGameName = cpDataJson["fnptagraw"].Value; //用户设备ID,Android系统取IMEI码;iOS6.0以前系统取设备号,iOS6.0及以后的系统取广告标示符(IDFA -Identifier For Advertising), PC可以采用mac地址。请注意不要用MD5加密did字段 SDKCacheData.CPDid = cpDataJson["deviceId"].Value; //cpdevice_name SDKCacheData.CPDevice_name = cpDataJson["deviceName"].Value; //SDK获取的gameID SDKCacheData.CPGameId = cpDataJson["fngid"].Value; } catch (System.Exception ex) { Debug.Log(ex.Message); } } } } public void OnLogoutCallback(ResultCode resultCode, string jsonResult) { if (resultCode != ResultCode.Success) { UnityEngine.Debug.LogError("OnLogoutCallback: fail code=" + resultCode); } else { EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_CALLBACK_LOGIN_LOGOUT_ACCOUNT, jsonResult); } } public void OnSwitchAccountCallback(ResultCode resultCode, string jsonResult) { if (resultCode != ResultCode.Success) { UnityEngine.Debug.LogError("SwitchAccountCallback: fail code=" + resultCode); } else { EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_CALLBACK_LOGIN_SWITCH_ACCOUNT, jsonResult); } } private void OnExitCallback(ResultCode resultCode, string jsonResult) { EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_EXIT_CALL, jsonResult); } public void OnPayCallback(ResultCode resultCode, string jsonResult) { if (resultCode != ResultCode.Fail || resultCode != ResultCode.Cancel) { //TODO 充值成功的统计 } EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_CALLBACK_PAY_CALLBACK, jsonResult); } public void OnServersUrlCallback(ResultCode resultCode, string jsonResult) { UnityEngine.Debug.Log("OnServersUrlCallback: " + jsonResult); EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_CALLBACK_SERVERS_LOADED, jsonResult); } public void OnNoticeCallback(ResultCode resultCode, string jsonResult) { UnityEngine.Debug.Log("OnNoticeCallback: " + jsonResult); EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_CALLBACK_NOTICE, jsonResult); } public void OnRealNameCallback(ResultCode resultCode, string jsonResult) { UnityEngine.Debug.Log("OnRealNameCallback: " + jsonResult); EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_CALLBACK_REALNAME_RESULT, jsonResult); } //图片裁剪回调 public void OnClipImgCallback(string args) { if (!string.IsNullOrEmpty(args)) { var startIndex = args.IndexOf(';'); string filePath = args.Substring(0, startIndex); string bytesBase64 = args.Substring(startIndex + 1); EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_CLIP_IMG_CALLBACK, filePath, bytesBase64); } } #endregion #region 设置需要缓存的数据 /// /// 获取渠道名字 /// /// public string GetPlatformName() { return SDKBridge.GetPlatformName(); } /// /// 设置sdk需要的角色信息 /// public void SetRoleInfo(string name, string roleID, string occ, long power, long gold, int level, int roleSex, int mapId, string appVersion, long roleCreateTime = 0) { SDKCacheData.RoleName = name; SDKCacheData.RoleID = roleID; SDKCacheData.RoleLevel = level.ToString(); SDKCacheData.RoleGoldBalance = gold.ToString(); SDKCacheData.RoleCreateTime = roleCreateTime.ToString(); SDKCacheData.FightPower = power.ToString(); SDKCacheData.RoleSex = roleSex.ToString(); SDKCacheData.MapId = mapId.ToString(); SDKCacheData.AppVersion = appVersion.ToString(); } /// ///初始化角色等级信息,当第一次进入游戏主场景时 /// /// public void SetLevelInfoWhileFirstEnterGame(int level) { #if UNITY_IPHONE && !UNITY_EDITOR FuncellSDKIOS.DealMessage(PLATFORM_DEAL_TYPE.PDT_LEVEL_CHANGE, "#" + level); #endif } /// /// 设置角色元宝余额 /// /// public void SetGoldBalance(int balance) { SDKCacheData.RoleGoldBalance = "" + balance; } /// ///设置公会信息 /// /// public void SetGuildName(string name) { SDKCacheData.RoleGuidName = name; } /// /// 设置服务器信息,选择服务器的时候就设置了 /// /// /// public void SetServerInfo(string serverId, string serverName) { SDKCacheData.ServerID = serverId; SDKCacheData.ServerName = serverName; } /// /// 处理sdk的消息 /// /// public void DealMessage(int msgID, string arg = "") { if (System.Enum.IsDefined(typeof(PLATFORM_DEAL_TYPE), msgID)) { #if UNITY_IPHONE && !UNITY_EDITOR FuncellSDKIOS.DealMessage((PLATFORM_DEAL_TYPE)msgID, arg); #endif } else UnityEngine.Debug.LogWarning("Did not define the message id in PlatformInterface: msgId=" + msgID); } /// /// 角色等级变化时调用 /// /// public void OnLevelChange(int level) { SDKCacheData.RoleLevel = "" + level; #if UNITY_IPHONE && !UNITY_EDITOR FuncellSDKIOS.DealMessage(PLATFORM_DEAL_TYPE.PDT_LEVEL_CHANGE, "" + level); #endif } //角色升级 public void SetRoleLevelupTime(long levelupTime) { SDKCacheData.RoleLevelUpTime = "" + levelupTime; } public void SendEventServerInfo() { EventServerInfo(); } public void SendEventLogin() { EventLogin(); } public void SendEventLevelUp() { EventLevelUp(); } /// /// 任务完成的统计 /// /// /// 任务类型,main, branch public void SendEventTaskFinsh(int taskId, string taskType) { } public void SendEventCreatRole() { EventCreatRole(); } //sdk是否初始化完成了,如果不使用sdk,总是返回true public bool IsSDKInitFinish() { if (UseSDK) return SDKInitFinish; return true; } public virtual bool IsEmulator() { return false; } /// /// 服务器列表的域名 /// /// public string GetServerUrl() { /**如果是空的,那么走cc环境 * 这里需要注意下,打包之后接了渠道包,这里肯定不会是空的,一般是PC下为空 * 2020/3/5 by dinghuaqiang */ if (string.IsNullOrEmpty(SDKCacheData.ServerUrl)) { return SDKCacheData.ServerUrl = SDKCacheData.DefaultURL; } return SDKCacheData.ServerUrl; } #endregion #region 其他公共函数 /// /// SDK的分享,主要针对于Facebook分享 /// /// public virtual void DoShare(string url) { } /// /// 前往市场对App评分 /// public virtual void DoRate(string appStoreUrl) { UnityEngine.Debug.Log("CommitToAppStore:" + appStoreUrl); _isCommitToAppstore = true; } /// /// 打开某个链接 /// /// public void OpenUrl(string url) { if (!string.IsNullOrEmpty(url)) { Application.OpenURL(url); } } public void OnApplicationResume() { if(_isCommitToAppstore) { _isCommitToAppstore = false; //通知评论完成 EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_COMMIT_TO_APPSTORE); } } //打开商店评论 public void CommitToAppStore(string appStoreUrl) { UnityEngine.Debug.Log("CommitToAppStore:" + appStoreUrl); _isCommitToAppstore = true; //android需要调用Intent #if UNITY_ANDROID if (appStoreUrl.StartsWith("market://")) { appStoreUrl = "market://details?id=" + Application.identifier; } #endif //ios直接打开url Application.OpenURL(appStoreUrl); } /// /// 获取广告标记 /// Android: google gaid /// IOS: idfa /// /// public virtual string GetADID() { return ""; } #endregion } }