update:更新flexion 以及sdk 接入
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b4630fc5c78457748a2f763ac5168df6
|
||||
guid: 1f7e4cbb67a383441bd126c06021a072
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
18
sdk-intergration/Packages/tysdk/Runtime/ChannelConfig.cs
Normal file
18
sdk-intergration/Packages/tysdk/Runtime/ChannelConfig.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
namespace tysdk
|
||||
{
|
||||
public static class ChannelConfig
|
||||
{
|
||||
public static string Channel { get; private set; } = "GooglePlay";
|
||||
|
||||
public static string PayType => Channel switch
|
||||
{
|
||||
"Rustore" => "rustore.global.app",
|
||||
"Flexion" => "flexion.global.app",
|
||||
_ => "googleiab.global.app"
|
||||
};
|
||||
|
||||
public static int LoginTimeoutSeconds => Channel == "Rustore" ? 120 : 30;
|
||||
|
||||
public static void SetChannel(string channel) { Channel = channel; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6dcc4e666f5907a47b1843de49da6f67
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 292a655e788d84d34aac4f83c57706ff
|
||||
guid: cca93fc1d8dde744a86aff3c3a1b73ed
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
53
sdk-intergration/Packages/tysdk/Runtime/TYSdkCoreModel.cs
Normal file
53
sdk-intergration/Packages/tysdk/Runtime/TYSdkCoreModel.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace tysdk
|
||||
{
|
||||
// TYSdkFacade 的登录/链接/ATT 等方法要依赖这些 POCO。
|
||||
|
||||
public enum EAccoutType
|
||||
{
|
||||
hwGoogle,
|
||||
hwFacebook,
|
||||
hwGuest,
|
||||
hwVkid,
|
||||
Apple,
|
||||
none
|
||||
}
|
||||
|
||||
public class LoginInfo
|
||||
{
|
||||
public bool isSuccess;
|
||||
public int userId;
|
||||
public string StrUserId => userId.ToString();
|
||||
public string msg;
|
||||
public int code;
|
||||
}
|
||||
|
||||
public class LinkResult
|
||||
{
|
||||
// 0: success, 1: fail, -1 exists
|
||||
public int code;
|
||||
// when success and fail userId is current user
|
||||
// when exists userId is 0
|
||||
public int userId;
|
||||
// not none when exists
|
||||
public Dictionary<string, string> bindInfo;
|
||||
}
|
||||
|
||||
public class ChangeLinkResult
|
||||
{
|
||||
public int code;
|
||||
public int userId;
|
||||
public string msg;
|
||||
}
|
||||
|
||||
public class LinkCheckInfo
|
||||
{
|
||||
public int code;
|
||||
}
|
||||
|
||||
public class ATTInfo
|
||||
{
|
||||
public bool isAccepted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2d36f2094aa5783423ab1ef40a88ccbe
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -34,14 +34,20 @@ namespace tysdk
|
||||
}
|
||||
}
|
||||
|
||||
private static Dictionary<string, EAccoutType> accoutTypeMap = new Dictionary<string, EAccoutType>(){
|
||||
private static Dictionary<string, EAccoutType> accoutTypeMap = new Dictionary<string, EAccoutType>()
|
||||
{
|
||||
{"google", EAccoutType.hwGoogle},
|
||||
{"fb", EAccoutType.hwFacebook},
|
||||
{"tyGuest", EAccoutType.hwGuest},
|
||||
{"ios13", EAccoutType.Apple},
|
||||
{AccountString.hwVkid, EAccoutType.hwVkid}
|
||||
{"vk.global.app", EAccoutType.hwVkid},
|
||||
};
|
||||
|
||||
public static void AddAccoutType(string key, EAccoutType value)
|
||||
{
|
||||
accoutTypeMap[key] = value;
|
||||
}
|
||||
|
||||
private static EAccoutType ConvertAccoutType(string accountType)
|
||||
{
|
||||
if (accoutTypeMap.ContainsKey(accountType))
|
||||
@@ -102,10 +108,11 @@ namespace tysdk
|
||||
}
|
||||
}
|
||||
|
||||
private static AccountInfo _accountInfo;
|
||||
public static AccountInfo TYAccountInfo => _accountInfo;
|
||||
|
||||
// ================== Singleton ==================
|
||||
private static TYSdkFacade _instance;
|
||||
public static AccountInfo TYAccountInfo => _accountInfo;
|
||||
protected static AccountInfo _accountInfo;
|
||||
|
||||
public static TYSdkFacade Instance
|
||||
{
|
||||
get
|
||||
@@ -118,26 +125,27 @@ namespace tysdk
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
|
||||
public static string Channel => ChannelConfig.Channel;
|
||||
|
||||
private int LoginTimeoutSeconds => ChannelConfig.LoginTimeoutSeconds;
|
||||
|
||||
// ================== Init ==================
|
||||
public void Init()
|
||||
{
|
||||
#if UNITY_ANDROID
|
||||
UnityBridgeFunc.InitSDK();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*================================================
|
||||
|
||||
_ _
|
||||
/ \ ___ ___ ___ _ _ _ __ | |_
|
||||
/ _ \ / __/ __/ _ \| | | | '_ \| __|
|
||||
/ ___ \ (_| (_| (_) | |_| | | | | |_
|
||||
/_/ \_\___\___\___/ \__,_|_| |_|\__|
|
||||
|
||||
=================================================*/
|
||||
|
||||
|
||||
public static bool IsLoggedIn => _accountInfo != null;
|
||||
|
||||
public void Logout()
|
||||
@@ -154,7 +162,7 @@ namespace tysdk
|
||||
|
||||
public async Task<LoginInfo> Login(EAccoutType accoutType)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
#if UNITY_EDITOR
|
||||
await Task.Yield();
|
||||
var deviceId = UnityEngine.Device.SystemInfo.deviceUniqueIdentifier.Split('-')[0].Substring(0, 8);
|
||||
|
||||
@@ -172,25 +180,25 @@ namespace tysdk
|
||||
};
|
||||
|
||||
#elif UNITY_ANDROID || UNITY_IOS
|
||||
var task = TYSDKCallbackManager.Instance.RegisterCallback<LoginInfo>(TimeSpan.FromSeconds(30));
|
||||
var task = TYSDKCallbackManager.Instance.RegisterCallback<LoginInfo>(TimeSpan.FromSeconds(LoginTimeoutSeconds));
|
||||
|
||||
UnityBridgeFunc.UnityLogin(accoutType);
|
||||
|
||||
try
|
||||
{
|
||||
var loginInfo = await task;
|
||||
if(loginInfo.isSuccess)
|
||||
{
|
||||
_accountInfo.channel = accoutType;
|
||||
_accountInfo.AddLinkedAccount(accoutType);
|
||||
_accountInfo.Save();
|
||||
}
|
||||
return loginInfo;
|
||||
var loginInfo = await task;
|
||||
if (loginInfo.isSuccess)
|
||||
{
|
||||
_accountInfo.channel = accoutType;
|
||||
_accountInfo.AddLinkedAccount(accoutType);
|
||||
_accountInfo.Save();
|
||||
}
|
||||
return loginInfo;
|
||||
}
|
||||
catch(Exception e)
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogWarning($"[TYSdkFacade] Login failed: {e}");
|
||||
return new LoginInfo(){isSuccess = false};
|
||||
Debug.LogWarning($"[TYSdkFacade] Login failed: {e}");
|
||||
return new LoginInfo() { isSuccess = false };
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -219,7 +227,7 @@ namespace tysdk
|
||||
return new LoginInfo() { isSuccess = false };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task<LoginInfo> LoginBySns()
|
||||
{
|
||||
Debug.Log("[TYSdkFacade] LoginBySns");
|
||||
@@ -304,18 +312,17 @@ namespace tysdk
|
||||
UnityBridgeFunc.SetGaUserInfo(strUserId);
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public async Task<LinkResult> LinkAccount(EAccoutType accoutType)
|
||||
{
|
||||
await Task.Delay(300);
|
||||
return new LinkResult(){code = 1};
|
||||
return new LinkResult() { code = 1 };
|
||||
}
|
||||
#elif UNITY_IOS || UNITY_ANDROID
|
||||
public async Task<LinkResult> LinkAccount(EAccoutType accoutType)
|
||||
public async Task<LinkResult> LinkAccount(EAccoutType accoutType)
|
||||
{
|
||||
if (_accountInfo == null) return new LinkResult(){ code = 1};
|
||||
if (_accountInfo.linkedAccout.Contains(accoutType)) return new LinkResult(){ code = 0};
|
||||
if (_accountInfo == null) return new LinkResult() { code = 1 };
|
||||
if (_accountInfo.linkedAccout.Contains(accoutType)) return new LinkResult() { code = 0 };
|
||||
|
||||
var task = TYSDKCallbackManager.Instance.RegisterCallback<LinkResult>(TimeSpan.FromMinutes(1));
|
||||
UnityBridgeFunc.LinkAccount(accoutType);
|
||||
@@ -337,6 +344,7 @@ namespace tysdk
|
||||
return new LinkResult() { code = 1 };
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
public void LinkAccoutResult(string message)
|
||||
{
|
||||
@@ -359,7 +367,7 @@ namespace tysdk
|
||||
}
|
||||
TYSDKCallbackManager.Instance.TryTriggerCallback(result);
|
||||
}
|
||||
#endif
|
||||
|
||||
public void CleanLinkTempSnSInfo()
|
||||
{
|
||||
UnityBridgeFunc.CleanLinkTmpSnsInfo();
|
||||
@@ -367,6 +375,10 @@ namespace tysdk
|
||||
|
||||
public async Task<ChangeLinkResult> ChangeLinkAccount(EAccoutType accoutType, int oldUserId, int newUserId)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
await Task.Delay(300);
|
||||
return new ChangeLinkResult() { code = 1 };
|
||||
#else
|
||||
var task = TYSDKCallbackManager.Instance.RegisterCallback<ChangeLinkResult>(TimeSpan.FromSeconds(30));
|
||||
UnityBridgeFunc.ChangeLinkAccount(accoutType, oldUserId, newUserId);
|
||||
try
|
||||
@@ -388,6 +400,7 @@ namespace tysdk
|
||||
{
|
||||
CleanLinkTempSnSInfo();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public void ChangeLinkAccountResult(string message)
|
||||
@@ -402,14 +415,6 @@ namespace tysdk
|
||||
TYSDKCallbackManager.Instance.TryTriggerCallback(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查是否已经绑定
|
||||
/// <returns>
|
||||
/// 1 已经绑定
|
||||
/// 0 未绑定
|
||||
/// -1 失败
|
||||
/// </returns>
|
||||
/// </summary>
|
||||
public async Task<bool> LinkCheck(EAccoutType accoutType)
|
||||
{
|
||||
if (_accountInfo == null) return false;
|
||||
@@ -435,7 +440,7 @@ namespace tysdk
|
||||
|
||||
return result.code == 1;
|
||||
}
|
||||
catch(Exception e)
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogWarning($"[TYSdkFacade] CheckLinkResult error: {e}");
|
||||
return false;
|
||||
@@ -457,7 +462,6 @@ namespace tysdk
|
||||
IConfig config = GContext.container.Resolve<IConfig>();
|
||||
var tyurl = config.Get<string>("AGG_SERVER", defaultTyurl);
|
||||
|
||||
|
||||
string tycs = tyurl == defaultTyurl ?
|
||||
"https://hwcsh.tygameworld.com/template/appCancel/note.html"
|
||||
:
|
||||
@@ -479,23 +483,12 @@ namespace tysdk
|
||||
string uid = $"uid={_accountInfo.userId}";
|
||||
list.Add(uid);
|
||||
|
||||
string roleid = "roleid=0";
|
||||
list.Add(roleid);
|
||||
|
||||
string gameid = "gameid=20587";
|
||||
list.Add(gameid);
|
||||
|
||||
string cloudid = "cloudid=128";
|
||||
list.Add(cloudid);
|
||||
|
||||
string gamename = "gamename=FishingTravel";
|
||||
list.Add(gamename);
|
||||
|
||||
string certification = "certification=0";
|
||||
list.Add(certification);
|
||||
|
||||
string ischannel = "ischannel=1";
|
||||
list.Add(ischannel);
|
||||
list.Add("roleid=0");
|
||||
list.Add("gameid=20587");
|
||||
list.Add("cloudid=128");
|
||||
list.Add("gamename=FishingTravel");
|
||||
list.Add("certification=0");
|
||||
list.Add("ischannel=1");
|
||||
|
||||
string tysdktoken = $"tysdktoken={_accountInfo.token}";
|
||||
list.Add(tysdktoken);
|
||||
@@ -505,7 +498,6 @@ namespace tysdk
|
||||
string listStr = string.Join("&", list.ToArray());
|
||||
string sign = listStr +
|
||||
"csh-api-6dfa879490a249be9fbc92e97e4d898d-api-csh";
|
||||
//对sign进行MD5加密
|
||||
string signMd5 = CalculateMD5Hash(sign);
|
||||
string url = $"{tycs}?{listStr}&sign={signMd5}&isAbroad=1&lan=en";
|
||||
Debug.Log($"[TYSdkFacade:Signout] url \n{url}");
|
||||
@@ -514,25 +506,16 @@ namespace tysdk
|
||||
|
||||
private string CalculateMD5Hash(string input)
|
||||
{
|
||||
// Create a new instance of the MD5CryptoServiceProvider object.
|
||||
MD5 md5Hasher = MD5.Create();
|
||||
|
||||
// Convert the input string to a byte array and compute the hash.
|
||||
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
|
||||
|
||||
// Create a new Stringbuilder to collect the bytes
|
||||
// and create a string.
|
||||
StringBuilder sBuilder = new StringBuilder();
|
||||
|
||||
// Loop through each byte of the hashed data
|
||||
// and format each one as a hexadecimal string.
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
sBuilder.Append(data[i].ToString("x2"));
|
||||
}
|
||||
|
||||
// Return the hexadecimal string.
|
||||
return sBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db12db58fbcc54046aa4dac203cd4971
|
||||
guid: f2fa4b960a2b4594d80ea8b8caa2912d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -4,17 +4,17 @@ using UnityEngine;
|
||||
|
||||
namespace tysdk
|
||||
{
|
||||
public partial class TYSdkFacade : MonoBehaviour
|
||||
public partial class TYSdkFacade
|
||||
{
|
||||
/*================================================
|
||||
|
||||
_ _____ _____
|
||||
_ _____ _____
|
||||
/ \|_ _|_ _|
|
||||
/ _ \ | | | |
|
||||
/ ___ \| | | |
|
||||
/_/ \_\_| |_|
|
||||
|
||||
=================================================*/
|
||||
/ _ \ | | | |
|
||||
/ ___ \| | | |
|
||||
/_/ \_\_| |_|
|
||||
|
||||
=================================================*/
|
||||
|
||||
public bool IsAttAccepted()
|
||||
{
|
||||
@@ -25,25 +25,25 @@ namespace tysdk
|
||||
{
|
||||
#if UNITY_EDITOR || UNITY_ANDROID
|
||||
await Task.Yield();
|
||||
|
||||
return new ATTInfo(){isAccepted = true};
|
||||
return new ATTInfo() { isAccepted = true };
|
||||
#elif UNITY_IOS
|
||||
var task = tysdk.TYSDKCallbackManager.Instance.RegisterCallback<ATTInfo>();
|
||||
var task = TYSDKCallbackManager.Instance.RegisterCallback<ATTInfo>();
|
||||
UnityBridgeFunc.RequestATT();
|
||||
try{
|
||||
return await task;
|
||||
}
|
||||
catch(Exception e)
|
||||
try
|
||||
{
|
||||
Debug.LogWarning(e.Message);
|
||||
return new ATTInfo(){isAccepted = false};
|
||||
return await task;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogWarning(e.Message);
|
||||
return new ATTInfo() { isAccepted = false };
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public void RequestATTResult(string r)
|
||||
{
|
||||
TYSDKCallbackManager.Instance.TryTriggerCallback(new ATTInfo(){isAccepted = r == "1"});
|
||||
TYSDKCallbackManager.Instance.TryTriggerCallback(new ATTInfo() { isAccepted = r == "1" });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f92075f5f98490ca94ae4984ac0aa21
|
||||
timeCreated: 1722855901
|
||||
fileFormatVersion: 2
|
||||
guid: 280d33ff6fcb3a342ab9683a01841b78
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
||||
@@ -2,14 +2,14 @@ using UnityEngine;
|
||||
|
||||
namespace tysdk
|
||||
{
|
||||
public partial class TYSdkFacade : MonoBehaviour
|
||||
public partial class TYSdkFacade
|
||||
{
|
||||
/*================================================
|
||||
|
||||
_____ _ _____ _
|
||||
_____ _ _____ _
|
||||
| ____|_ _____ _ __ | |_ |_ _| __ __ _ ___| | __
|
||||
| _| \ \ / / _ \ '_ \| __| | || '__/ _` |/ __| |/ /
|
||||
| |___ \ V / __/ | | | |_ | || | | (_| | (__| <
|
||||
| |___ \ V / __/ | | | |_ | || | | (_| | (__| <
|
||||
|_____| \_/ \___|_| |_|\__| |_||_| \__,_|\___|_|\_\
|
||||
|
||||
=================================================*/
|
||||
@@ -21,18 +21,18 @@ namespace tysdk
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public enum GATrackType
|
||||
{
|
||||
GA_TRACK = 1, //默认类型
|
||||
GA_CION = 2, //金流相关事件
|
||||
GA_PAY = 3, //支付相关事件
|
||||
GA_GAME = 4, //游戏行为
|
||||
GA_LOGIN = 5, //登录注册相关事件
|
||||
GA_PUSH = 6, //推送相关事件
|
||||
GA_ADBOX = 7, //adbox相关事件
|
||||
GA_PREFORMANCE = 8, //性能上报相关事件
|
||||
GA_SDK = 9, //SDK相关事件
|
||||
GA_ABTest = 10, //abtest相关事件
|
||||
GA_TRACK = 1,
|
||||
GA_CION = 2,
|
||||
GA_PAY = 3,
|
||||
GA_GAME = 4,
|
||||
GA_LOGIN = 5,
|
||||
GA_PUSH = 6,
|
||||
GA_ADBOX = 7,
|
||||
GA_PREFORMANCE = 8,
|
||||
GA_SDK = 9,
|
||||
GA_ABTest = 10,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 18459dcf8d5a40dc80ffae5333a6b0c9
|
||||
timeCreated: 1722855439
|
||||
fileFormatVersion: 2
|
||||
guid: aa58ede4826973c4bbe3a5ebfdcd4b43
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
||||
@@ -8,32 +8,30 @@ using System.Text;
|
||||
|
||||
namespace tysdk
|
||||
{
|
||||
public partial class TYSdkFacade : MonoBehaviour
|
||||
public partial class TYSdkFacade
|
||||
{
|
||||
/*================================================
|
||||
|
||||
____ _
|
||||
| _ \ __ _ _ _ _ __ ___ ___ _ __ | |_
|
||||
____ _
|
||||
| _ \ __ _ _ _ _ __ ___ ___ _ __ | |_
|
||||
| |_) / _` | | | | '_ ` _ \ / _ \ '_ \| __|
|
||||
| __/ (_| | |_| | | | | | | __/ | | | |_
|
||||
| __/ (_| | |_| | | | | | | __/ | | | |_
|
||||
|_| \__,_|\__, |_| |_| |_|\___|_| |_|\__|
|
||||
|___/
|
||||
|___/
|
||||
=================================================*/
|
||||
|
||||
private bool _payFirstNegativeHandled;
|
||||
|
||||
//public async Task<PaymentInfo> Pay(string prodId, string prodPrice, string prodName, int count, string pType, string price_amount_micros =null)
|
||||
public async Task<PaymentInfo> Pay(SKUDetail prod, int count, float usdprice, JObject purchaseInfo)
|
||||
{
|
||||
if (!IsLoggedIn) return new PaymentInfo() { code = "-1", msg = "未登录" };
|
||||
|
||||
var orderId = System.Guid.NewGuid().ToString();
|
||||
|
||||
if(purchaseInfo == null)
|
||||
if (purchaseInfo == null)
|
||||
purchaseInfo = new JObject();
|
||||
|
||||
string extraInfo = purchaseInfo.ToString(Newtonsoft.Json.Formatting.None);
|
||||
//to base64
|
||||
extraInfo = Convert.ToBase64String(Encoding.UTF8.GetBytes(extraInfo));
|
||||
Debug.Log("[TYSdk] extraInfo: " + extraInfo);
|
||||
var prodId = prod.ProdID;
|
||||
@@ -57,14 +55,13 @@ namespace tysdk
|
||||
return result;
|
||||
#elif UNITY_ANDROID
|
||||
|
||||
var pType = "googleiab.global.app";
|
||||
var pType = ChannelConfig.PayType;
|
||||
|
||||
var task = TYSDKCallbackManager.Instance.RegisterCallback<PaymentInfo>(TimeSpan.FromSeconds(30));
|
||||
|
||||
try
|
||||
{
|
||||
//UnityBridgeFunc.UnityKnow(prodId, prodName, count.ToString(), orderId, extraInfo);
|
||||
UnityBridgeFunc.UnityKnowNew(prodId, prodPrice, prodName, count.ToString(), orderId, extraInfo,pType);
|
||||
UnityBridgeFunc.UnityKnowNew(prodId, prodPrice, prodName, count.ToString(), orderId, extraInfo, pType);
|
||||
|
||||
var result = await task;
|
||||
result.count = count;
|
||||
@@ -108,7 +105,6 @@ namespace tysdk
|
||||
#endif
|
||||
}
|
||||
|
||||
//支付的回调
|
||||
public void PayResult(string json)
|
||||
{
|
||||
Debug.Log("[TYSdkFacade] pay callback:" + json);
|
||||
@@ -116,7 +112,7 @@ namespace tysdk
|
||||
var result = new PaymentInfo();
|
||||
result.code = jresult["code"].ToString();
|
||||
result.msg = jresult["errStr"].ToString();
|
||||
if(result.code == "-1")
|
||||
if (result.code == "-1")
|
||||
{
|
||||
if (!_payFirstNegativeHandled)
|
||||
{
|
||||
@@ -133,12 +129,11 @@ namespace tysdk
|
||||
TYSDKCallbackManager.Instance.TryTriggerCallback(result);
|
||||
}
|
||||
|
||||
// Get Pay list
|
||||
public async Task<ProductListInfo> GetSKUList()
|
||||
{
|
||||
if (!IsLoggedIn) return new ProductListInfo() { code = -1, msg = "未登录" };
|
||||
|
||||
#if UNITY_EDITOR
|
||||
#if UNITY_EDITOR
|
||||
await Task.Yield();
|
||||
|
||||
var result = new ProductListInfo();
|
||||
@@ -151,7 +146,6 @@ namespace tysdk
|
||||
#endif
|
||||
}
|
||||
|
||||
//商品列表的回调
|
||||
public void SKUListResult(string json)
|
||||
{
|
||||
Debug.Log("[TYSdkFacade] GetSKUList callback");
|
||||
@@ -174,7 +168,3 @@ namespace tysdk
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 41b6dc16dbab43388317bf9ff032cdca
|
||||
timeCreated: 1722855703
|
||||
fileFormatVersion: 2
|
||||
guid: e05900a4aa124d746bfe9c15328fd0e9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
||||
@@ -1,62 +1,14 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace tysdk
|
||||
{
|
||||
public enum EAccoutType
|
||||
{
|
||||
hwGoogle,
|
||||
hwFacebook,
|
||||
hwGuest,
|
||||
hwVkid,
|
||||
Apple,
|
||||
none
|
||||
}
|
||||
|
||||
public static class AccountString
|
||||
{
|
||||
public const string hwVkid = "vk.global.app";
|
||||
}
|
||||
|
||||
|
||||
public class LoginInfo
|
||||
{
|
||||
public bool isSuccess;
|
||||
public int userId;
|
||||
public string StrUserId => userId.ToString();
|
||||
public string msg;
|
||||
public int code;
|
||||
}
|
||||
|
||||
public class LinkResult
|
||||
{
|
||||
// 0: success, 1: fail, -1 exists
|
||||
public int code;
|
||||
// when success and fail userId is current user
|
||||
// when exists userId is 0
|
||||
public int userId;
|
||||
// not none when exists
|
||||
public Dictionary<string, string> bindInfo;
|
||||
}
|
||||
|
||||
public class ChangeLinkResult
|
||||
{
|
||||
public int code;
|
||||
public int userId;
|
||||
public string msg;
|
||||
}
|
||||
|
||||
public class LinkCheckInfo
|
||||
{
|
||||
public int code;
|
||||
}
|
||||
|
||||
public class PaymentInfo
|
||||
{
|
||||
public bool isSuccessFromSdk => code == "0";
|
||||
public bool isSuccess => isSuccessFromSdk && confirmed;
|
||||
private bool confirmed {get; set;} = false;
|
||||
private bool confirmed { get; set; } = false;
|
||||
public int count;
|
||||
public string orderId;
|
||||
public string productId;
|
||||
@@ -65,21 +17,26 @@ namespace tysdk
|
||||
public string code;
|
||||
public string msg;
|
||||
|
||||
// Flexion: purchase.getOriginalJson(), used by server for RSA signature verification
|
||||
public string purchaseJson;
|
||||
// Flexion: purchase.getSignature(), used by server for RSA signature verification
|
||||
public string signature;
|
||||
|
||||
public bool Check(string orderId, string productId)
|
||||
{
|
||||
confirmed = orderId == this.orderId && productId == this.productId;
|
||||
|
||||
if(!confirmed)
|
||||
if (!confirmed)
|
||||
UnityEngine.Debug.LogWarning("[TYSdk Pay] order not confirmed");
|
||||
return confirmed;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this);
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class ProductListInfo
|
||||
{
|
||||
public int code = 1;
|
||||
@@ -103,7 +60,6 @@ namespace tysdk
|
||||
products = prodList;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#if UNITY_IOS
|
||||
@@ -124,7 +80,7 @@ namespace tysdk
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this);
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
}
|
||||
#else
|
||||
@@ -132,28 +88,30 @@ namespace tysdk
|
||||
{
|
||||
public string description;
|
||||
public string ourProductId;
|
||||
public string productId;
|
||||
public string price;
|
||||
public string price_amount_micros;
|
||||
public string price_currency_code;
|
||||
public string productId;
|
||||
public string title;
|
||||
public string type;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this);
|
||||
}
|
||||
// RuStore specific
|
||||
public string currency;
|
||||
public string price_amount;
|
||||
|
||||
public string ProdPriceStr => price;
|
||||
public float ProdPrice => float.Parse(price_amount_micros) / 1000000;
|
||||
public string ProdPriceStr => ChannelConfig.Channel == "Rustore"
|
||||
? $"₽{ProdPrice}"
|
||||
: price;
|
||||
public float ProdPrice => ChannelConfig.Channel == "Rustore"
|
||||
? float.Parse(price) / 100
|
||||
: float.Parse(price_amount_micros) / 1000000;
|
||||
public string ProdID => ourProductId;
|
||||
public string ProdKey => productId;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
public class ATTInfo
|
||||
{
|
||||
public bool isAccepted;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b94c8e87cc23b4053a4cbf592ff14db3
|
||||
guid: ebabed604bd06e44099073951d667658
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -4,64 +4,46 @@ using UnityEngine;
|
||||
|
||||
namespace tysdk
|
||||
{
|
||||
|
||||
public static class UnityBridgeFunc
|
||||
{
|
||||
#if UNITY_EDITOR || UNITY_ANDROID
|
||||
private static string EAccountTypeToStr(EAccoutType accountType)
|
||||
{
|
||||
return accountType == EAccoutType.hwVkid ? AccountString.hwVkid : accountType.ToString();
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
public static void InitSDK() { }
|
||||
|
||||
#endif
|
||||
#if UNITY_EDITOR
|
||||
//初始化sdk
|
||||
public static void InitSDK(){}
|
||||
|
||||
//更新登录支付域名
|
||||
public static void UnityResetServerUrl(string url){}
|
||||
public static void UnityResetServerUrl(string url) { }
|
||||
|
||||
//登录
|
||||
public static void UnityLoginByTokenFun(string token){}
|
||||
public static void UnityLoginByTokenFun(string token) { }
|
||||
|
||||
public static string UnityLoginBySnsInfoFun() => null;
|
||||
|
||||
public static void UnityLogin(EAccoutType accoutType){}
|
||||
public static void UnityLogin(EAccoutType accoutType) { }
|
||||
|
||||
public static void CleanLinkTmpSnsInfo() { }
|
||||
|
||||
|
||||
public static void LinkAccount(EAccoutType accoutType){}
|
||||
public static void ChangeLinkAccount(EAccoutType accoutType, int oldUserId, int newUserId){}
|
||||
public static void LinkCheck(EAccoutType accoutType){}
|
||||
public static void LinkAccount(EAccoutType accoutType) { }
|
||||
public static void ChangeLinkAccount(EAccoutType accoutType, int oldUserId, int newUserId) { }
|
||||
public static void LinkCheck(EAccoutType accoutType) { }
|
||||
|
||||
public static void UnityGetIdentityFun(string type){}
|
||||
public static void UnityGetIdentityFun(string type) { }
|
||||
|
||||
public static void UnityLogOutByChannel(EAccoutType accoutType) { }
|
||||
|
||||
public static void UnityLogOutByChannel(EAccoutType accoutType){}
|
||||
//支付new
|
||||
public static void UnityKnowNew(string productId, string productPrice, string productName,
|
||||
string productCount, string prodorderId, string appInfo, string pType) { }
|
||||
|
||||
//支付
|
||||
|
||||
public static void UnityKnow(String productId, String productName, String productCount,
|
||||
String prodorderId, String appInfo) {}
|
||||
|
||||
//获取商品列表
|
||||
String prodorderId, String appInfo) { }
|
||||
|
||||
public static void GetSKUList() { }
|
||||
|
||||
//打点
|
||||
public static void SetGaUserInfo(string userId){}
|
||||
|
||||
public static void SetGaUserInfo(string userId) { }
|
||||
|
||||
public static void SetGaCommonInfo(string SetGaCommonInfo){}
|
||||
public static void SetGaCommonInfo(string SetGaCommonInfo) { }
|
||||
|
||||
public static void GAReportParams(int type, string eventstr, string paramstr){}
|
||||
public static void GAReportParams(int type, string eventstr, string paramstr) { }
|
||||
|
||||
//ATT
|
||||
public static void RequestATT(){}
|
||||
public static void RequestATT() { }
|
||||
|
||||
public static int GetATT() {return 1;}
|
||||
public static int GetATT() { return 1; }
|
||||
|
||||
public static void Review() { }
|
||||
|
||||
@@ -72,30 +54,34 @@ namespace tysdk
|
||||
|
||||
private static string SDK_CLASS = "com.unity3d.player.SDKManager";
|
||||
|
||||
//初始化sdk
|
||||
public static void InitSDK(){
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
private static string EAccountTypeToStr(EAccoutType accoutType)
|
||||
{
|
||||
return accoutType == EAccoutType.hwVkid ? "vk.global.app" : accoutType.ToString();
|
||||
}
|
||||
|
||||
public static void InitSDK()
|
||||
{
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
using(var activityCls = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
||||
using (var activityCls = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
||||
{
|
||||
var activity = activityCls.GetStatic<AndroidJavaObject>("currentActivity");
|
||||
sdkManager.CallStatic("InitSDK", activity);
|
||||
sdkManager.CallStatic("InitSDK", activity, ChannelConfig.Channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
//更新登录支付域名
|
||||
|
||||
public static void UnityResetServerUrl(string url)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("UnityResetServerUrl", url);
|
||||
}
|
||||
}
|
||||
|
||||
//登录
|
||||
public static void UnityLoginByTokenFun(string token)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("UnityLoginByTokenFun", token);
|
||||
}
|
||||
@@ -103,7 +89,7 @@ namespace tysdk
|
||||
|
||||
public static String UnityLoginBySnsInfoFun()
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
return sdkManager.CallStatic<string>("UnityLoginBySnsInfo");
|
||||
}
|
||||
@@ -112,16 +98,15 @@ namespace tysdk
|
||||
public static void UnityLogin(EAccoutType accoutType)
|
||||
{
|
||||
var accountInfo = EAccountTypeToStr(accoutType);
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("UnityLogin",accountInfo);
|
||||
sdkManager.CallStatic("UnityLogin", accountInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void UnityGetIdentityFun(string type)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("UnityGetIdentityFun", type);
|
||||
}
|
||||
@@ -129,9 +114,8 @@ namespace tysdk
|
||||
|
||||
public static void UnityLogOutByChannel(EAccoutType accoutType)
|
||||
{
|
||||
|
||||
var accountInfo = EAccountTypeToStr(accoutType);
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("UnityLogOutByChannel", accountInfo);
|
||||
}
|
||||
@@ -140,20 +124,18 @@ namespace tysdk
|
||||
public static void LinkAccount(EAccoutType accoutType)
|
||||
{
|
||||
string userId = TYSdkFacade.TYAccountInfo.strUserId;
|
||||
var accountInfo = EAccountTypeToStr(accoutType);
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
var accountInfo = EAccountTypeToStr(accoutType);
|
||||
sdkManager.CallStatic("LinkAccount",accountInfo,userId);
|
||||
sdkManager.CallStatic("LinkAccount", accountInfo, userId);
|
||||
}
|
||||
}
|
||||
|
||||
public static void CleanLinkTmpSnsInfo(){
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
public static void CleanLinkTmpSnsInfo()
|
||||
{
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
using(var activityCls = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
||||
{
|
||||
sdkManager.CallStatic("CleanLinkTmpSnsInfo");
|
||||
}
|
||||
sdkManager.CallStatic("CleanLinkTmpSnsInfo");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,47 +151,42 @@ namespace tysdk
|
||||
public static void LinkCheck(EAccoutType accoutType)
|
||||
{
|
||||
var accountInfo = EAccountTypeToStr(accoutType);
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("LinkCheck",accountInfo);
|
||||
sdkManager.CallStatic("LinkCheck", accountInfo);
|
||||
}
|
||||
}
|
||||
|
||||
//支付new
|
||||
public static void UnityKnowNew(string productId, string productPrice, string productName,
|
||||
string productCount, string prodorderId, string appInfo,string pType)
|
||||
string productCount, string prodorderId, string appInfo, string pType)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("UnityKnowNew", productId, productPrice, productName,
|
||||
productCount, prodorderId, appInfo,pType);
|
||||
productCount, prodorderId, appInfo, pType);
|
||||
}
|
||||
}
|
||||
|
||||
//支付
|
||||
|
||||
public static void UnityKnow(String productId, String productName, String productCount, String prodorderId, String appInfo)
|
||||
public static void UnityKnow(String productId, String productName, String productCount, String prodorderId, String appInfo)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("UnityKnow", productId, productName, productCount, prodorderId, appInfo);
|
||||
sdkManager.CallStatic("UnityKnow", productId, productName, productCount, prodorderId, appInfo);
|
||||
}
|
||||
}
|
||||
|
||||
//获取商品列表
|
||||
public static void GetSKUList()
|
||||
{
|
||||
UnityEngine.Debug.Log("UnityBridgeFunc.GetSKUList()");
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("thirdExtend");
|
||||
}
|
||||
}
|
||||
|
||||
//打点
|
||||
public static void SetGaUserInfo(string userId)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("SetGaUserInfo", userId);
|
||||
}
|
||||
@@ -217,7 +194,7 @@ namespace tysdk
|
||||
|
||||
public static void SetGaCommonInfo(string SetGaCommonInfo)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("SetGaCommonInfo", SetGaCommonInfo);
|
||||
}
|
||||
@@ -225,38 +202,35 @@ namespace tysdk
|
||||
|
||||
public static void GAReportParams(int type, string eventstr, string paramstr)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("GAReportParams", type, eventstr, paramstr);
|
||||
}
|
||||
}
|
||||
|
||||
public static void RequestATT() { }
|
||||
|
||||
//ATT
|
||||
public static void RequestATT(){}
|
||||
|
||||
public static int GetATT() {return 1;}
|
||||
public static int GetATT() { return 1; }
|
||||
|
||||
public static void Review()
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("Review");
|
||||
// sdkManager.CallStataic("RuStoreReview");
|
||||
}
|
||||
}
|
||||
|
||||
public static void FBShareLink(string title, string content, string url)
|
||||
public static void FBShareLink(string title, string content, string url)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("FBShareLink", title, content, url);
|
||||
}
|
||||
}
|
||||
|
||||
public static void MessengerShareLink(string title, string content, string url)
|
||||
public static void MessengerShareLink(string title, string content, string url)
|
||||
{
|
||||
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
using (var sdkManager = new AndroidJavaClass(SDK_CLASS))
|
||||
{
|
||||
sdkManager.CallStatic("MessengerShareLink", title, content, url);
|
||||
}
|
||||
@@ -264,11 +238,9 @@ namespace tysdk
|
||||
|
||||
#elif UNITY_IOS
|
||||
|
||||
//更新登录支付域名
|
||||
[DllImport("__Internal")]
|
||||
public static extern void UnityResetServerUrl(string url);
|
||||
|
||||
//登录
|
||||
[DllImport("__Internal")]
|
||||
public static extern void UnityLoginByTokenFun(string token);
|
||||
|
||||
@@ -284,7 +256,6 @@ namespace tysdk
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
// Convert C string to C# string
|
||||
string result = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(ptr);
|
||||
return result ?? string.Empty;
|
||||
}
|
||||
@@ -375,7 +346,6 @@ namespace tysdk
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[DllImport("__Internal")] private static extern void LinkGoogle(int userId);
|
||||
[DllImport("__Internal")] private static extern void LinkFacebook(int userId);
|
||||
[DllImport("__Internal")] private static extern void LinkApple(int userId);
|
||||
@@ -393,31 +363,25 @@ namespace tysdk
|
||||
case EAccoutType.hwFacebook:
|
||||
IsLinkedFacebook();
|
||||
break;
|
||||
|
||||
case EAccoutType.Apple:
|
||||
IsLinkedApple();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[DllImport("__Internal")] public static extern void CleanLinkTmpSnsInfo();
|
||||
|
||||
[DllImport("__Internal")] private static extern void IsLinkedGoogle();
|
||||
[DllImport("__Internal")] private static extern void IsLinkedFacebook();
|
||||
[DllImport("__Internal")] private static extern void IsLinkedApple();
|
||||
|
||||
|
||||
//支付
|
||||
[DllImport("__Internal")]
|
||||
public static extern void UnityKnow(string userId, string productId, string productPrice, string productName,
|
||||
string productCount, string prodorderId, string appInfo);
|
||||
|
||||
//获取商品列表
|
||||
[DllImport("__Internal")]
|
||||
public static extern void GetSKUList();
|
||||
|
||||
//打点
|
||||
[DllImport("__Internal")]
|
||||
public static extern void SetGaUserInfo(string userId);
|
||||
|
||||
@@ -427,7 +391,6 @@ namespace tysdk
|
||||
[DllImport("__Internal")]
|
||||
public static extern void GAReportParams(int type, string eventstr, string paramstr);
|
||||
|
||||
//ATT
|
||||
[DllImport("__Internal")]
|
||||
public static extern void RequestATT();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 16335dd05906d48bf81e297920aecf31
|
||||
guid: e24b3b915d94468419519a81bb69e269
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user