Files
2025-01-25 04:38:09 +08:00

958 lines
36 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// SDK功能类通过请求类型与客户端进行交互避免多个函数来回访问
/// SDK与客户端的交互主要通过三个函数来实现
/// 1. CallFunc(调用Android的ClientToSDK函数)
/// 2. SetDatas数据统计SDKStatistics.StatisticalEvent()
/// 3. Callback(SDK_Object接收Android发送过来的消息)
/// 以后要更新SDK只需要更新枚举文件FuncellEnum同时实现新增枚举对应方法android端不用改动
/// </summary>
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)
{
}
/// <summary>
/// 判断当前手机是否是全面屏
/// </summary>
/// <returns></returns>
public virtual bool HasNotchInScreen()
{
return false;
}
/// <summary>
/// 是否实名制了
/// </summary>
/// <returns></returns>
public virtual bool IsRealNameAuthorized()
{
return false;
}
/// <summary>
/// 调用SDK的实名制界面
/// </summary>
public virtual void DoRealNameAuthority(string name, string idcard)
{
}
/// <summary>
/// 获取当前网络类型
/// </summary>
/// <returns></returns>
public virtual string GetNetworkType()
{
return null;
}
/// <summary>
/// 重启App
/// </summary>
public virtual void ReStartGame()
{
}
public virtual Dictionary<string, string> GetPCParams()
{
return new Dictionary<string, string>();
}
#endregion
#region 退
/// <summary>
/// 显示个人中心
/// </summary>
public void ShowAccountCenter()
{
CallFunc(RequestOptType.ReqShowAccountCenter);
}
/// <summary>
/// 调用sdk的登陆接口
/// </summary>
public void SDKLogin()
{
Debug.LogError("SDKLogin......");
CallFunc(RequestOptType.ReqLogin);
}
/// <summary>
/// 登出sdk账号
/// </summary>
public void SDKLogout()
{
CallFunc(RequestOptType.ReqLogout);
}
public void SwitchAccount()
{
CallFunc(RequestOptType.ReqSwitchLogin);
}
private void DoExitGame()
{
CallFunc(RequestOptType.ReqExit);
}
/// <summary>
/// 调用sdk的退出游戏接口有些sdk有自己的退出界面
/// </summary>
/// <returns></returns>
public bool ExitGame()
{
if (!UseSDK)
{
EventManager.SharedInstance.PushFixEvent(SDKEventDefine.SDK_EXIT_CALL, null);
return true;
}
DoExitGame();
return true;
}
/// <summary>
/// sdk的支付接口
/// </summary>
/// <param name="itemId"></param>
/// <param name="itemName"></param>
/// <param name="type"></param>
/// <param name="num"></param>
/// <param name="price"></param>
/// <param name="extData"></param>
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();
}
/// <summary>
/// 请求支付
/// </summary>
/// <param name="arg1">对应android端FuncellRoleInfo类以方法名_值的格式构造json数据</param>
/// <param name="arg2">对应android端FuncellPayParams类以方法名_值的格式构造json数据</param>
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());
}
/// <summary>
/// 真正的充值成功回调,这里逻辑是这样的
/// 1. SDK充值成功之后通知游戏
/// 2. 游戏收到通知之后向服务器请求加元宝
/// 3. 服务器通知客户端元宝添加成功
/// 这里处于第3步的操作相当于走完了整个的充值流程可以统计真正完成的交易有多少了
/// </summary>
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到客户端的回调
/// <summary>
/// SDK_Object用来接收Android发送过来的消息
/// </summary>
/// <param name="result"></param>
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<T>(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;
//用户设备IDAndroid系统取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
/// <summary>
/// 获取渠道名字
/// </summary>
/// <returns></returns>
public string GetPlatformName()
{
return SDKBridge.GetPlatformName();
}
/// <summary>
/// 设置sdk需要的角色信息
/// </summary>
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();
}
/// <summary>
///初始化角色等级信息,当第一次进入游戏主场景时
/// </summary>
/// <param name="level"></param>
public void SetLevelInfoWhileFirstEnterGame(int level)
{
#if UNITY_IPHONE && !UNITY_EDITOR
FuncellSDKIOS.DealMessage(PLATFORM_DEAL_TYPE.PDT_LEVEL_CHANGE, "#" + level);
#endif
}
/// <summary>
/// 设置角色元宝余额
/// </summary>
/// <param name="balance"></param>
public void SetGoldBalance(int balance)
{
SDKCacheData.RoleGoldBalance = "" + balance;
}
/// <summary>
///设置公会信息
/// </summary>
/// <param name="name"></param>
public void SetGuildName(string name)
{
SDKCacheData.RoleGuidName = name;
}
/// <summary>
/// 设置服务器信息,选择服务器的时候就设置了
/// </summary>
/// <param name="serverId"></param>
/// <param name="serverName"></param>
public void SetServerInfo(string serverId, string serverName)
{
SDKCacheData.ServerID = serverId;
SDKCacheData.ServerName = serverName;
}
/// <summary>
/// 处理sdk的消息
/// </summary>
/// <param name="msgID"></param>
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);
}
/// <summary>
/// 角色等级变化时调用
/// </summary>
/// <param name="level"></param>
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();
}
/// <summary>
/// 任务完成的统计
/// </summary>
/// <param name="taskId"></param>
/// <param name="taskType">任务类型main, branch</param>
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;
}
/// <summary>
/// 服务器列表的域名
/// </summary>
/// <returns></returns>
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
/// <summary>
/// SDK的分享主要针对于Facebook分享
/// </summary>
/// <param name="url"></param>
public virtual void DoShare(string url)
{
}
/// <summary>
/// 前往市场对App评分
/// </summary>
public virtual void DoRate(string appStoreUrl)
{
UnityEngine.Debug.Log("CommitToAppStore:" + appStoreUrl);
_isCommitToAppstore = true;
}
/// <summary>
/// 打开某个链接
/// </summary>
/// <param name="url"></param>
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);
}
/// <summary>
/// 获取广告标记
/// Android: google gaid
/// IOS: idfa
/// </summary>
/// <returns></returns>
public virtual string GetADID()
{
return "";
}
#endregion
}
}