using UnityEngine;
|
using LitJson;
|
using UnityEngine.Events;
|
using System.Collections.Generic;
|
using System.Runtime.InteropServices;
|
using System.Collections;
|
|
public class SDKUtility : SingletonMonobehaviour<SDKUtility>
|
{
|
public static bool assetCopyFinish = false;
|
|
public static float ElectricQuantity = 1f;
|
public static string UniqueID = "";
|
public static string AND_UserAgent = "";
|
public static string AND_MacAddress = "";
|
public static string AND_IMEI = "";
|
public static string AND_AndroidID = "";
|
public static string AND_IP = "";
|
public UnityAction<string> onUniqueIDChanged;
|
public static int wifiSignal = 3;
|
|
public NetworkReachability NetWorkState = NetworkReachability.NotReachable;
|
|
public UnityAction onAssetsCopyFinish;
|
public UnityAction<int, int> onBatteryChanged;
|
// 0 "未开启监视电池状态", 1 "电池未充电状态", 2 "电池充电状态", 3 "电池充电完成"
|
public int BatteryState { get; private set; }
|
public UnityAction<int> onBatteryStateChanged;
|
/// <summary>
|
/// 网络状态改变: 0: 无网络 1: wifi网络 2: 手机网络( >= 2为手机网络, 依次为2G,3G,4G)
|
/// </summary>
|
public UnityAction<int> onNetStatusChanged;
|
public UnityAction<int> onPhoneSignalChanged;
|
public UnityAction<int> onWifiSignalChanged;
|
public string GeTuiClientID { get; private set; }
|
|
public string channelId = "1000";
|
public string platfromId = "1000";
|
|
private const int CODE_SDK_COPY_ASSETS_OVER = 2001;
|
private const int CODE_SDK_BATTERY_CHANGED = 2002;
|
private const int CODE_SDK_NETSTATE_CHANGED = 2003;
|
private const int CODE_SDK_GETUI_CLIENT_ID = 2004;
|
private const int CODE_SDK_GETUI_MESSAGE = 2005;
|
private const int CODE_SDK_PHONESIGNAL_LEVEL = 2006;
|
private const int CODE_SDK_WIFISIGNAL_LEVEL = 2007;
|
private const int CODE_SDK_EXTERNALSTORAGEDIRECTORY = 2008;
|
private const int CODE_SDK_MAKEKEYANDVISIBLE = 2010;
|
private const int CODE_SDK_IOS_OPENURL = 2011;
|
private const int CODE_SDK_BATTERY_STATE_CHANGE = 2012;
|
private const int CODE_SDK_UNIQUE_ID_CHANGE = 2013;
|
private const int CODE_SDK_AD_TOKEN = 4000;
|
private const int CODE_SDK_USERAGENT = 4100;
|
|
public static bool hasGetAndroidInfo = false;
|
|
public string Account { get; private set; }
|
|
public string AD_Token
|
{
|
get; private set;
|
}
|
|
[DllImport("__Internal")]
|
private static extern void IOSMessageHandle(string json);
|
|
/// <summary>
|
/// Android的内部存储根目录
|
/// </summary>
|
public string externalStorageDirectory = null;
|
|
public void Initialize()
|
{
|
GeTuiClientID = string.Empty;
|
|
if (VersionConfig.Get().versionAuthority == VersionAuthority.Release)
|
{
|
SendClientPackage();
|
}
|
|
#if !UNITY_EDITOR
|
|
|
#if UNITY_IOS
|
var assetsCopyFinishVersion = LocalSave.GetString("AssetCopyCompleted_IOS");
|
if (string.IsNullOrEmpty(assetsCopyFinishVersion))
|
{
|
assetCopyFinish = false;
|
}
|
else
|
{
|
assetCopyFinish = VersionConfig.Get().version == assetsCopyFinishVersion;
|
}
|
|
FreePlatformInit();
|
#endif
|
StartCoroutine("GetWifiState");
|
#endif
|
|
}
|
|
private IEnumerator GetWifiState()
|
{
|
while (true)
|
{
|
yield return WaitingForSecondConst.WaitMS1000;
|
|
if (Application.internetReachability != NetWorkState)
|
{
|
NetWorkState = Application.internetReachability;
|
|
if (onNetStatusChanged != null)
|
{
|
onNetStatusChanged((int)NetWorkState);
|
}
|
}
|
}
|
}
|
|
public void TestBattery()
|
{
|
int level = Random.Range(1, 100);
|
int total = 100;
|
ElectricQuantity = (float)level / total;
|
|
//Debug.LogFormat("收到电量通知 => 当前: {0}, 总量: {1}, 百分比:{2}", level, total, ElectricQuantity);
|
|
if (onBatteryChanged != null)
|
{
|
onBatteryChanged(level, total);
|
}
|
}
|
|
public void TestWifi()
|
{
|
NetworkReachability _state = (NetworkReachability)Random.Range(0, 2);
|
if (NetWorkState != _state)
|
{
|
NetWorkState = _state;
|
if (onNetStatusChanged != null)
|
{
|
onNetStatusChanged((int)NetWorkState);
|
}
|
//Debug.LogFormat("网络状态变更: {0}", NetWorkState);
|
}
|
|
}
|
|
public void Recv_SDK_Callback(string msg)
|
{
|
JsonData _jsonData = JsonMapper.ToObject(msg);
|
switch ((int)_jsonData["code"])
|
{
|
case CODE_SDK_FREEPLATFORM_INIT_OK:// 初始化成功
|
if (onFreePlatformInitOk != null)
|
{
|
onFreePlatformInitOk();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_INIT_FAIL:// 初始化失败
|
if (onFreePlatformInitFail != null)
|
{
|
onFreePlatformInitFail();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_LOGIN_OK:// 登陆成功
|
|
#if UNITY_ANDROID
|
HandleFreePlatformLoginOk(_jsonData["info"]);
|
#elif UNITY_IOS
|
HandleFreePlatformLoginOk(_jsonData);
|
#endif
|
|
OperationLogCollect.Instance.RecordEvent(6);
|
|
break;
|
case CODE_SDK_FREEPLATFORM_LOGIN_FAIL:// 登陆成功
|
if (onFreePlatformLoginFail != null)
|
{
|
onFreePlatformLoginFail();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_LOGOUT_OK:// 登出成功
|
if (onFreePlatformLogoutOk != null)
|
{
|
onFreePlatformLogoutOk();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_LOGOUT_FAIL:// 登出失败
|
if (onFreePlatformLogoutFail != null)
|
{
|
onFreePlatformLogoutFail();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_PAY_OK:// 支付成功
|
if (onFreePlatformPayOk != null)
|
{
|
onFreePlatformPayOk();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_PAY_FAIL:// 支付失败
|
if (onFreePlatformPayFail != null)
|
{
|
onFreePlatformPayFail();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_PAY_CANCEL:// 支付退出
|
if (onFreePlatformPayCancel != null)
|
{
|
onFreePlatformPayCancel();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_BIND_OK:
|
if (onFreePlatformBindOk != null)
|
{
|
onFreePlatformBindOk();
|
}
|
break;
|
case CODE_SDK_FREEPLATFORM_BIND_FAIL:
|
if (onFreePlatformBindFail != null)
|
{
|
onFreePlatformBindFail();
|
}
|
break;
|
case CODE_SDK_AD_TOKEN:
|
AD_Token = _jsonData["token"].ToString();
|
//Debug.LogFormat("获取广告sdk的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<AndroidJavaObject>("currentActivity");
|
_jo.Call("copyAsset");
|
}
|
|
public int GetDeviceMemInfo()
|
{
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
return _jo.Call<int>("getMemInfo");
|
}
|
|
public void RestartApp()
|
{
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("RestartApp");
|
}
|
|
public void CopyTextToClipboard(string content)
|
{
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("CopyTextToClipboard", content);
|
}
|
|
public void OpenUrl(string url)
|
{
|
#if UNITY_ANDROID
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("OpenUrl", url);
|
#elif UNITY_IOS
|
string _content = "{\"code\":2011,\"url\":\"" + url + "\"}";
|
IOSMessageHandle(_content);
|
#endif
|
}
|
|
public void SendClientPackage()
|
{
|
#if UNITY_ANDROID && !UNITY_EDITOR
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("setClientPackageID", VersionConfig.Get().clientPackageFlag);
|
#endif
|
}
|
|
public void InstallAPK(string path)
|
{
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("InstallAPK", path);
|
}
|
|
public void MakeKeyAndVisible()
|
{
|
#if UNITY_IOS
|
string _content = "{\"code\":2010}";
|
IOSMessageHandle(_content);
|
#endif
|
}
|
|
public string GetAndroidRoot()
|
{
|
return externalStorageDirectory;
|
}
|
|
private void HandleBatteryChanged(JsonData data)
|
{
|
int _level = (int)data["level"];
|
int _scale = (int)data["scale"];
|
|
ElectricQuantity = (float)_level / _scale;
|
|
//Debug.LogFormat("收到电量通知 => 当前: {0}, 总量: {1}, 百分比:{2}", _level, _scale, ElectricQuantity);
|
|
if (onBatteryChanged != null)
|
{
|
onBatteryChanged(_level, _scale);
|
}
|
}
|
|
private void HandleGT_ClientID(JsonData data)
|
{
|
GeTuiClientID = data["clientID"].ToString();
|
//DesignDebug.Log("收到个推 => ClientID: " + GeTuiClientID);
|
}
|
|
private void HandleGT_TouChuanMSG(JsonData data)
|
{
|
string _getuiMSG = data["msg"].ToString();
|
//DesignDebug.Log("收到个推透传信息 => msg: " + _getuiMSG);
|
}
|
|
#region 自由SDK相关
|
|
public struct FP_LoginOk
|
{
|
public string account;
|
public string token;
|
public string tokenExpire;
|
public int phone;
|
public int accountID;
|
}
|
|
public struct FP_CheckIDAuthentication
|
{
|
public string errorcode;
|
public string errordesc;
|
public string type;
|
public string card_id;
|
}
|
|
public struct FP_DoIDAuthentication
|
{
|
public string errorcode;
|
public string errordesc;
|
public string card_id;
|
}
|
|
public string AppID
|
{
|
get
|
{
|
return VersionConfig.Get().appId;
|
}
|
}
|
|
private const int CODE_SDK_FREEPLATFORM_INIT_OK = 3000;
|
private const int CODE_SDK_FREEPLATFORM_INIT_FAIL = 3001;
|
private const int CODE_SDK_FREEPLATFORM_LOGIN_OK = 3002;
|
private const int CODE_SDK_FREEPLATFORM_LOGIN_FAIL = 3003;
|
private const int CODE_SDK_FREEPLATFORM_LOGOUT_OK = 3004;
|
private const int CODE_SDK_FREEPLATFORM_LOGOUT_FAIL = 3005;
|
private const int CODE_SDK_FREEPLATFORM_PAY_OK = 3006;
|
private const int CODE_SDK_FREEPLATFORM_PAY_FAIL = 3007;
|
private const int CODE_SDK_FREEPLATFORM_PAY_CANCEL = 3008;
|
private const int CODE_SDK_FREEPLATFORM_BIND_OK = 3009;
|
private const int CODE_SDK_FREEPLATFORM_BIND_FAIL = 3010;
|
private const int CODE_SDK_FREEPLATFORM_REG_OK = 3011;
|
|
public UnityAction onFreePlatformInitOk;
|
public UnityAction onFreePlatformInitFail;
|
public UnityAction<FP_LoginOk> onFreePlatformLoginOk;
|
public UnityAction onFreePlatformLoginFail;
|
public UnityAction onFreePlatformLogoutOk;
|
public UnityAction onFreePlatformLogoutFail;
|
public UnityAction onFreePlatformPayOk;
|
public UnityAction onFreePlatformPayFail;
|
public UnityAction onFreePlatformPayCancel;
|
public UnityAction onFreePlatformBindOk;
|
public UnityAction onFreePlatformBindFail;
|
public UnityAction<FP_CheckIDAuthentication> onFreePlatfromCheckIDOK;
|
public UnityAction<FP_DoIDAuthentication> onFreePlatfromDoIDAuthenticationOk;
|
|
public void FreePlatformInit()
|
{
|
#if UNITY_IOS
|
IOSMessageHandle("{\"code\":3100}");
|
#endif
|
}
|
|
/// <summary>
|
/// 自由SDK登陆
|
/// </summary>
|
public void FreePlatformLogin()
|
{
|
#if UNITY_ANDROID
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("FreePlatformLogin");
|
#elif UNITY_IOS
|
IOSMessageHandle("{\"code\":3101}");
|
#endif
|
}
|
|
/// <summary>
|
/// 自由SDK退出
|
/// </summary>
|
public void FreePlatformLoginout()
|
{
|
#if UNITY_ANDROID
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("FreePlatformLogout");
|
#elif UNITY_IOS
|
IOSMessageHandle("{\"code\":3102}");
|
#endif
|
}
|
|
public void FreePlatformBindPhone()
|
{
|
#if UNITY_ANDROID
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("BindPhone");
|
#endif
|
}
|
|
public void FreePlatformSwitchAccount()
|
{
|
#if UNITY_ANDROID
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("SwitchAccount");
|
#endif
|
}
|
|
/// <summary>
|
/// 自由SDK显示游戏中悬浮
|
/// </summary>
|
public void FreePlatformShowGameFloat()
|
{
|
#if UNITY_ANDROID
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("ShowGameFloat");
|
#endif
|
}
|
|
/// <summary>
|
/// 自由SDK隐藏游戏中悬浮
|
/// </summary>
|
public void FreePlatformHideGameFloat()
|
{
|
#if UNITY_ANDROID
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("HideGameFloat");
|
#endif
|
}
|
|
private Dictionary<string, string> m_PaymentTable = new Dictionary<string, string>();
|
private string m_EncodeKey = "03sujm7gerywdvyd5vkkk772rs4by230";
|
|
/// <summary>
|
/// 自由SDK支付 fixed sdk 支付逻辑修改
|
/// </summary>
|
public void FreePlatformPay(string title, float money, string cpInfo)
|
{
|
m_PaymentTable["ProductID"] = "snxxz";
|
m_PaymentTable["OperatorID"] = VersionConfig.Get().appId;
|
m_PaymentTable["RegionName"] = "s" + ServerListCenter.Instance.currentServer.region_flag;
|
m_PaymentTable["TimeStamp"] = ((long)(System.DateTime.Now - System.TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1))).TotalSeconds).ToString();
|
m_PaymentTable["Time"] = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
m_PaymentTable["EventID"] = "12001";
|
m_PaymentTable["IP"] = DeviceUtility.GetIp();
|
m_PaymentTable["AccountID"] = Snxxz.UI.ModelCenter.Instance.GetModel<Snxxz.UI.LoginModel>().sdkLoginResult.account;
|
m_PaymentTable["SessionID"] = "11";
|
m_PaymentTable["Level"] = PlayerDatas.Instance.baseData.LV.ToString();
|
m_PaymentTable["VIPLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString();
|
m_PaymentTable["CurrencyAmount"] = money.ToString();
|
m_PaymentTable["OrderTitle"] = title;
|
m_PaymentTable["OrderInfo"] = cpInfo;
|
m_PaymentTable["AppID"] = VersionConfig.Get().appId;
|
|
var _stringBuilder = new System.Text.StringBuilder();
|
var _md5Body = _stringBuilder.Append(m_PaymentTable["AppID"]).
|
Append(m_PaymentTable["AccountID"]).
|
Append(m_PaymentTable["TimeStamp"]).
|
Append(m_PaymentTable["CurrencyAmount"]).
|
Append(m_EncodeKey);
|
|
var _md5Encode = System.Security.Cryptography.MD5.Create();
|
var _encodeResult = _md5Encode.ComputeHash(System.Text.Encoding.UTF8.GetBytes(_md5Body.ToString()));
|
|
_stringBuilder.Remove(0, _stringBuilder.Length);
|
for (int i = 0; i < _encodeResult.Length; ++i)
|
{
|
_stringBuilder.Append(_encodeResult[i].ToString("x2"));
|
}
|
|
m_PaymentTable["Sign"] = _stringBuilder.ToString();
|
m_PaymentTable["RoleID"] = PlayerDatas.Instance.baseData.PlayerName;
|
|
_stringBuilder.Remove(0, _stringBuilder.Length);
|
|
HttpRequest.Instance.RequestHttpGet(_stringBuilder.Append("http://recharge.game.173on.com:11000/api?").
|
Append(HttpRequest.HashtablaToString(m_PaymentTable)).ToString(),
|
HttpRequest.defaultHttpContentType, 1, (bool result, string message) =>
|
{
|
if (result)
|
{
|
JsonData _json = JsonMapper.ToObject(message);
|
|
int _callbackResult = (int)_json["result"];
|
|
if (_callbackResult == 1)
|
{
|
#if !UNITY_EDITOR
|
|
#if UNITY_ANDROID
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("Pay", title, _json["orderid"].ToString(), money, cpInfo);
|
|
#elif UNITY_IOS
|
JsonData _params = new JsonData();
|
_params["code"] = 3103;
|
_params["identifier"] = VersionConfig.Get().bundleIdentifier;
|
_params["cpOrderId"] = _json["orderid"].ToString();
|
_params["total"] = money;
|
_params["cpInfo"] = cpInfo;
|
_params["title"] = title;
|
IOSMessageHandle(_params.ToJson());
|
#endif
|
m_Order = _json["orderid"].ToString();
|
m_Money = money;
|
#endif
|
}
|
else
|
{
|
Debug.Log(_json["msg"].ToString());
|
if (onFreePlatformPayFail != null)
|
{
|
onFreePlatformPayFail();
|
}
|
}
|
}
|
else
|
{
|
if (onFreePlatformPayFail != null)
|
{
|
onFreePlatformPayFail();
|
}
|
}
|
});
|
}
|
|
string authenticationCardId = "";
|
public void FreePlatformDoIDAuthentication(string _account, string _userName, string _idNumber)
|
{
|
authenticationCardId = _idNumber;
|
|
var tables = new Dictionary<string, string>();
|
tables["app_id"] = VersionConfig.Get().appId;
|
tables["account"] = _account;
|
tables["card_id"] = _idNumber;
|
tables["mac"] = DeviceUtility.GetMac();
|
tables["rolename"] = _userName;
|
tables["channelid"] = channelId;
|
|
var url = "http://zysdk.xileyougame.com/api.php/Service/anti_mystery?";
|
HttpRequest.Instance.RequestHttpGet(StringUtility.Contact(url, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType, 1, HandleIDAuthenticationResult);
|
}
|
|
public void FreePlatformCheckIDAuthentication(string _account)
|
{
|
var url = "http://zysdk.xileyougame.com/api.php/Service/check_mystery?";
|
var tables = new Dictionary<string, string>();
|
tables["app_id"] = VersionConfig.Get().appId;
|
tables["channelid"] = channelId;
|
tables["account"] = _account;
|
tables["platfrom_id"] = platfromId;
|
|
HttpRequest.Instance.RequestHttpGet(StringUtility.Contact(url, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType, 1, HandleCheckIDAuthenticationResult);
|
}
|
|
private void HandleIDAuthenticationResult(bool _ok, string _result)
|
{
|
if (_ok)
|
{
|
if (onFreePlatfromDoIDAuthenticationOk != null)
|
{
|
var result = JsonMapper.ToObject<FP_DoIDAuthentication>(_result);
|
result.card_id = authenticationCardId;
|
onFreePlatfromDoIDAuthenticationOk(result);
|
}
|
}
|
else
|
{
|
|
}
|
}
|
|
private void HandleCheckIDAuthenticationResult(bool _ok, string _result)
|
{
|
if (_ok)
|
{
|
if (onFreePlatfromCheckIDOK != null)
|
{
|
var result = JsonMapper.ToObject<FP_CheckIDAuthentication>(_result);
|
onFreePlatfromCheckIDOK(result);
|
}
|
}
|
else
|
{
|
|
}
|
}
|
|
private void HandleFreePlatformLoginOk(JsonData data)
|
{
|
FP_LoginOk _loginOK = new FP_LoginOk
|
{
|
token = data["token"].ToString(),
|
tokenExpire = data["token_expire"].ToString(),
|
account = data["account"].ToString(),
|
accountID = int.Parse(data["account_id"].ToString()),
|
phone = 0
|
};
|
|
Account = _loginOK.account;
|
|
if (onFreePlatformLoginOk != null)
|
{
|
onFreePlatformLoginOk(_loginOK);
|
}
|
|
// string _cachePath = Application.persistentDataPath + "/record_sdk_login_content.txt";
|
//
|
// if (!File.Exists(_cachePath))
|
// {
|
// File.Create(_cachePath);
|
// }
|
//
|
// string _content = string.Format("[{0}] sdk登陆完成, 获得信息 (token=\"{1}\", tokenExpire=\"{2}\", account=\"{3}\", accountID=\"{4}\", phone=\"{5}\")",
|
// System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
|
// _loginOK.token,
|
// _loginOK.tokenExpire,
|
// _loginOK.account,
|
// _loginOK.accountID,
|
// _loginOK.phone);
|
//
|
// FileStream _fs = new FileStream(_cachePath, FileMode.Append);
|
// StreamWriter _sw = new StreamWriter(_fs);
|
// _sw.WriteLine(_content);
|
// _sw.Close();
|
// _fs.Close();
|
}
|
|
public void OnServerChargeOk(string orderID, uint coin)
|
{
|
OperationLogCollect.Instance.RecordEvent(9, coin);
|
SendTouTiaoADEvent(2);
|
#if (UNITY_IOS || UNITY_ANDROID) && !UNITY_EDITOR
|
|
Dictionary<string, string> dict = new Dictionary<string, string>();
|
dict.Add("token", AD_Token);
|
dict.Add("amount", coin.ToString());
|
HttpRequest.Instance.RequestHttpPost("http://tako.lingleigame.com/api/pay?",
|
dict,
|
"application/x-www-form-urlencoded",
|
1, (result, msg) =>
|
{
|
Debug.LogFormat("广告充值埋点回调结果: {0}, 信息: {1}", result, msg);
|
});
|
#endif
|
if (onFreePlatformPayOk != null)
|
{
|
onFreePlatformPayOk();
|
}
|
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("PayFinished", orderID, "_default_", "CNY", (float)coin / 100);
|
}
|
|
#endregion
|
|
#region 热云SDK相关
|
|
private string m_Order;
|
private float m_Money;
|
|
public void TrackRegister(string account)
|
{
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("TrackRegister", account);
|
}
|
|
public void TrackLogin(string account)
|
{
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("TrackLogin", account);
|
}
|
|
public void TrackPaymentStart(string transactionId, string paymentType, string currencyType, float currencyAmount)
|
{
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("TrackPaymentStart", transactionId, paymentType, currencyType, currencyAmount);
|
}
|
|
public void TrackPaymentFinish(string transactionId, string paymentType, string currencyType, float currencyAmount)
|
{
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("TrackPaymentFinish", transactionId, paymentType, currencyType, currencyAmount);
|
}
|
|
#endregion
|
|
#region 极光推送相关
|
public void GeTui_SendLocalMessage(JsonData jsonData)
|
{
|
// ------ 举例 ------
|
// JsonData _params = new JsonData ();
|
// _params ["code"] = 2005;
|
// _params ["id"] = 5;// id 重要, 标示每个通知的更新或者移除
|
// _params ["title"] = "the title";// 推送标题
|
// _params ["subtitle"] = "the subtitle";// 副标题
|
// _params ["content"] = "the content";// 具体内容
|
// _params ["badge"] = -1;// 角标
|
//
|
// // 以下为决定应该多久后弹出此通知
|
// System.TimeSpan ts = System.DateTime.UtcNow - new System.DateTime (1970, 1, 1, 0, 0, 0, 0);
|
// long ret = System.Convert.ToInt64 (ts.TotalSeconds) + 3;// 表示3秒后
|
// _params ["fireTime"] = ret;
|
|
#if UNITY_IOS && !UNITY_EDITOR
|
IOSMessageHandle(jsonData.ToJson());
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
|
jsonData["fireTime"] = (long)jsonData["fireTime"] * 1000;
|
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("addLocalNotification", jsonData.ToJson());
|
#endif
|
}
|
|
public void GeTui_RemoveLocalMessage(string id)
|
{
|
JsonData _params = new JsonData();
|
_params["code"] = 2006;
|
_params["id"] = id;// id 重要, 标示每个通知的更新或者移除
|
|
#if UNITY_IOS && !UNITY_EDITOR
|
IOSMessageHandle(_params.ToJson());
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
AndroidJavaClass _jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
|
AndroidJavaObject _jo = _jc.GetStatic<AndroidJavaObject>("currentActivity");
|
_jo.Call("removeNotification", id);
|
#endif
|
}
|
|
#endregion
|
|
public void SendTouTiaoADEvent(int eventType)
|
{
|
#if !UNITY_EDITOR
|
string _url = "http://center.secondworld.net.cn:53004/ad/eventtype/" + VersionConfig.Get().clientPackageFlag + "?";
|
|
var tables = new Dictionary<string, string>();
|
tables["MAC1"] = AND_MacAddress;
|
tables["UA"] = WWW.EscapeURL(AND_UserAgent);
|
tables["ANDROIDID1"] = AND_AndroidID;
|
tables["IP"] = AND_IP;
|
tables["IMEI"] = AND_IMEI;
|
tables["event_type"] = eventType.ToString();
|
|
string _content = StringUtility.Contact(_url, HttpRequest.HashtablaToString(tables));
|
|
Debug.Log("TouTiaoAD: " + _content);
|
|
HttpRequest.Instance.RequestHttpGet(_content, HttpRequest.defaultHttpContentType, 1, (result, message) =>
|
{
|
if (!result)
|
{
|
Debug.Log(message);
|
}
|
});
|
#endif
|
}
|
|
//public void WriteDebug(string content)
|
//{
|
// string _url = Application.persistentDataPath + "/debug_log.txt";
|
// System.IO.FileInfo _fileInfo = new System.IO.FileInfo(_url);
|
// System.IO.StreamWriter _sw = null;
|
// if (_fileInfo.Exists)
|
// {
|
// _sw = _fileInfo.AppendText();
|
// }
|
// else
|
// {
|
// _sw = _fileInfo.CreateText();
|
// }
|
// _sw.WriteLine(content);
|
// _sw.Close();
|
// _sw.Dispose();
|
//}
|
}
|