From 58a29b03354b9dcc4141e5fb8037101945066ec7 Mon Sep 17 00:00:00 2001 From: tech Date: Thu, 25 Dec 2025 15:41:48 +0800 Subject: [PATCH] [M] change sns link function --- .gitignore | 1 + .../Assets/Plugins/Android/SnsTest.java | 1 + .../Plugins/Android/mainTemplate.gradle | 1 - sdk-intergration/Assets/Scripts/UnbindTest.cs | 10 +-- .../tysdk/Plugins/Android/ConfigManager.java | 1 + .../tysdk/Plugins/Android/SDKManager.java | 87 +++++++++++++++++-- .../Packages/tysdk/Runtime/TYSdkFacade.cs | 22 ++--- .../Packages/tysdk/Runtime/TYSdkModel.cs | 9 +- 8 files changed, 106 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index abdfde2..8cc580f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ bin_BurstDebugInformation_DoNotShip sdk-intergration/.vscode sdk-intergration/' sdk-intergration/Assets/.claude/settings.json +sdk-intergration/.idea diff --git a/sdk-intergration/Assets/Plugins/Android/SnsTest.java b/sdk-intergration/Assets/Plugins/Android/SnsTest.java index 4323435..970b39e 100644 --- a/sdk-intergration/Assets/Plugins/Android/SnsTest.java +++ b/sdk-intergration/Assets/Plugins/Android/SnsTest.java @@ -1,3 +1,4 @@ + package com.unity3d.player; import android.util.Log; diff --git a/sdk-intergration/Assets/Plugins/Android/mainTemplate.gradle b/sdk-intergration/Assets/Plugins/Android/mainTemplate.gradle index f7d87d1..e441272 100644 --- a/sdk-intergration/Assets/Plugins/Android/mainTemplate.gradle +++ b/sdk-intergration/Assets/Plugins/Android/mainTemplate.gradle @@ -62,7 +62,6 @@ dependencies { // Android Resolver Exclusions Start android { - namespace "com.unity3d.player" packagingOptions { exclude ('/lib/armeabi/*' + '*') exclude ('/lib/mips/*' + '*') diff --git a/sdk-intergration/Assets/Scripts/UnbindTest.cs b/sdk-intergration/Assets/Scripts/UnbindTest.cs index b5e9685..ddcbf67 100644 --- a/sdk-intergration/Assets/Scripts/UnbindTest.cs +++ b/sdk-intergration/Assets/Scripts/UnbindTest.cs @@ -59,10 +59,8 @@ public class UnbindTest : MonoBehaviour checkSnsBtn.onClick.AddListener(OnCheckSns); bindBtn.onClick.AddListener(OnBind); unbindBtn.onClick.AddListener(OnUnbind); - Debug.Log("========== Init ============="); TYSdkFacade.Instance.Init(); - Debug.Log($"AccoutType {accoutType}"); } @@ -109,13 +107,11 @@ public class UnbindTest : MonoBehaviour } } - private void OnBind() + private async void OnBind() { Debug.Log("========== Bind ============="); - using (var t = new AndroidJavaClass(Cls)) - { - t.CallStatic("Bind", accoutType.ToString(), loginInfo.StrUserId); - } + var linkResult = await TYSdkFacade.Instance.LinkAccount(accoutType); + Debug.Log($"Bind Result Code:{linkResult.code}, UserId:{linkResult.userId}, bindInfo:{linkResult.bindInfo}"); } public void BindCallback(string message) diff --git a/sdk-intergration/Packages/tysdk/Plugins/Android/ConfigManager.java b/sdk-intergration/Packages/tysdk/Plugins/Android/ConfigManager.java index 454d336..92b6302 100644 --- a/sdk-intergration/Packages/tysdk/Plugins/Android/ConfigManager.java +++ b/sdk-intergration/Packages/tysdk/Plugins/Android/ConfigManager.java @@ -21,6 +21,7 @@ public class ConfigManager { public static final String UNITY_FACADE_NAME = "TYSdkFacade"; public static final String LOGIN_CALLBACK_FUNCTION_NAME = "LoginResult"; + public static final String LINKACCOUT_CALLBACK_FUNCTION_NAME = "LinkAccoutResult"; public static final String CHECKLINK_CALLBACK_FUNCTION_NAME = "CheckLinkResult"; public static final String PAY_CALLBACK_FUNCTION_NAME = "PayResult"; public static final String PAY_TYPE_CALLBACK_FUNCTION_NAME = "SKUListResult"; diff --git a/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java b/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java index 1a51292..c60730b 100644 --- a/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java +++ b/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java @@ -161,12 +161,87 @@ public class SDKManager { } public static void LinkAccount(String type, String userId) - { - SDKAPI.getIns().getSnsInfo(type, (code, snsInfo, msg) -> { - if(code == SDKCallBack.CODE_SUCCESS && snsInfo != null){ - SDKAPI.getIns().bindBySnsId(snsInfo, userId, mLogin); - }else { - UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LOGIN_CALLBACK_FUNCTION_NAME, "{\"code\":1}}"); + { + SDKAPI.getIns().getSnsInfo(type, (snscode, snsInfo, snsmsg) ->{ + if(snscode == SDKCallBack.CODE_SUCCESS && snsInfo !=null) + { + SDKAPI.getIns().bindBySnsId(snsInfo, userId, (bindcode, bindmsg)->{ + if(bindcode == SDKCallBack.CODE_SUCCESS) + { + String msg = "{\"code\":0, \"userId\": 0}"; + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); + } + else if(bindcode == 1) + { + try + { + JSONObject bindMsgObj = new JSONObject(bindmsg); + JSONObject bindMsgResult = bindMsgObj.getJSONObject("result"); + int bindMsgResultCode = bindMsgResult.getInt("code"); + if(bindMsgResultCode == 4) + { + SDKAPI.getIns().checkSnsInfo(snsInfo, (checkcode, checkMsg ) -> { + if(checkcode != SDKCallBack.CODE_SUCCESS) + { + Log.w(TAG, checkMsg); + String msg = "{\"code\":1, \"userId\": 0}"; + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); + return; + } + try { + //{ + // "track":"128:10:28654792:1766569516", + // "result":{ + // "bindInfo":"{ // \"guest\": \"guest:devidmap3:bf12a8a28b663548e368ebe8742368b7\", // \"google\": \"google:118182347502471840780\" // }", + // "code":0, + // "info":"user exist", + // "exist":1, + // "userId":10030 + // } + // } + JSONObject checkMsgObj = new JSONObject(checkMsg); + JSONObject checkResult = checkMsgObj.getJSONObject("result"); + String bindInfo = checkResult.getString("bindInfo"); + int bindUserId = checkResult.getInt("userId"); + JSONObject callbackMsg = new JSONObject(); + callbackMsg.put("code", -1); + callbackMsg.put("userId", bindUserId); + callbackMsg.put("bindInfo", bindInfo); + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, callbackMsg.toString()); + } catch (JSONException e) { + Log.i(TAG, e.toString()); + String msg = "{\"code\":1, \"userId\": 0}"; + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); + } + }); + } + else + { + Log.w(TAG, bindmsg); + String msg = "{\"code\":1, \"userId\": 0}"; + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); + } + } + catch (JSONException e) + { + Log.i(TAG, e.toString()); + String msg = "{\"code\":1, \"userId\": 0}"; + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); + } + } + else + { + Log.w(TAG, bindmsg); + String msg = "{\"code\":1, \"userId\": 0}"; + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); + } + }); + } + else + { + Log.w(TAG, snsmsg); + String msg = "{\"code\":1, \"userId\": 0}"; + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); } }); } diff --git a/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs b/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs index d1d0f68..8ca74a8 100644 --- a/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs +++ b/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs @@ -273,16 +273,16 @@ namespace tysdk #if UNITY_EDITOR - public async Task LinkAccount(EAccoutType accoutType) + public async Task LinkAccount(EAccoutType accoutType) { await Task.Delay(300); - return true; + return new LinkResult(){code = 1}; } #elif UNITY_IOS || UNITY_ANDROID - public async Task LinkAccount(EAccoutType accoutType) + public async Task LinkAccount(EAccoutType accoutType) { - if (_accountInfo == null) return false; - if (_accountInfo.linkedAccout.Contains(accoutType)) return true; + if (_accountInfo == null) return new LinkResult(){ code = 1}; + if (_accountInfo.linkedAccout.Contains(accoutType)) return new LinkResult(){ code = 0}; var task = TYSDKCallbackManager.Instance.RegisterCallback(); UnityBridgeFunc.LinkAccount(accoutType); @@ -290,7 +290,7 @@ namespace tysdk try { var result = await task; - if (result.isSuccess) + if (result.code == 0) { if (_accountInfo == null) _accountInfo = AccountInfo.GetSavedAccoutInfo(); @@ -301,20 +301,22 @@ namespace tysdk _accountInfo.Save(); } } - return result.isSuccess; + return result; } catch (Exception e) { Debug.LogWarning($"[TYSdkFacade] Link account failed: {e}"); - return false; + return new LinkResult() { code = 1 }; } } - public void LinkAccoutResult(string codestr) + public void LinkAccoutResult(string message) { + JObject data = new JObject(message); var result = new LinkResult() { - isSuccess = codestr == "1" + code = data["code"].Value(), + userId = data["userId"].Value() }; TYSDKCallbackManager.Instance.TryTriggerCallback(result); diff --git a/sdk-intergration/Packages/tysdk/Runtime/TYSdkModel.cs b/sdk-intergration/Packages/tysdk/Runtime/TYSdkModel.cs index 8538c2a..cc846e7 100644 --- a/sdk-intergration/Packages/tysdk/Runtime/TYSdkModel.cs +++ b/sdk-intergration/Packages/tysdk/Runtime/TYSdkModel.cs @@ -12,7 +12,6 @@ namespace tysdk Apple, none } - public class LoginInfo { @@ -25,7 +24,13 @@ namespace tysdk public class LinkResult { - public bool isSuccess; + // 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 string bindInfo; } public class LinkCheckInfo