diff --git a/sdk-intergration/Assets/Scenes/SampleScene.unity b/sdk-intergration/Assets/Scenes/SampleScene.unity index 39e32a6..50dc601 100644 --- a/sdk-intergration/Assets/Scenes/SampleScene.unity +++ b/sdk-intergration/Assets/Scenes/SampleScene.unity @@ -122,6 +122,85 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &9113281 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9113282} + - component: {fileID: 9113284} + - component: {fileID: 9113283} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9113282 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9113281} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 678940590} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9113283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9113281} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 33 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Review +--- !u!222 &9113284 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9113281} + m_CullTransparentMesh: 1 --- !u!1 &29523098 GameObject: m_ObjectHideFlags: 0 @@ -1564,6 +1643,127 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 571824850} m_CullTransparentMesh: 1 +--- !u!1 &678940589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 678940590} + - component: {fileID: 678940593} + - component: {fileID: 678940592} + - component: {fileID: 678940591} + m_Layer: 5 + m_Name: Review + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &678940590 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678940589} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9113282} + m_Father: {fileID: 1044920373} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &678940591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678940589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 678940592} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &678940592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678940589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &678940593 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678940589} + m_CullTransparentMesh: 1 --- !u!1 &686445508 GameObject: m_ObjectHideFlags: 0 @@ -2774,6 +2974,7 @@ RectTransform: - {fileID: 1686948820} - {fileID: 827533342} - {fileID: 1240291498} + - {fileID: 678940590} m_Father: {fileID: 1451597222} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -4765,6 +4966,7 @@ MonoBehaviour: _signoutBtn: {fileID: 1686948823} _fbShareLinkBtn: {fileID: 827533345} _mfbShareLinkBtn: {fileID: 1240291501} + _reviewBtn: {fileID: 678940591} _messageTxt: {fileID: 2070325010} --- !u!4 &1788702880 Transform: diff --git a/sdk-intergration/Assets/Scripts/SDKTest.cs b/sdk-intergration/Assets/Scripts/SDKTest.cs index a92e301..5f8e762 100644 --- a/sdk-intergration/Assets/Scripts/SDKTest.cs +++ b/sdk-intergration/Assets/Scripts/SDKTest.cs @@ -55,6 +55,10 @@ public class SDKTest : MonoBehaviour private Button _fbShareLinkBtn; [SerializeField] private Button _mfbShareLinkBtn; + + [SerializeField] + private Button _reviewBtn; + [SerializeField] private Text _messageTxt; @@ -99,6 +103,7 @@ public class SDKTest : MonoBehaviour _signoutBtn.onClick.AddListener(OnSignoutBtn); _fbShareLinkBtn.onClick.AddListener(OnFBShareLinkBtn); _mfbShareLinkBtn.onClick.AddListener(OnMessengerShareLinkBtn); + _reviewBtn.onClick.AddListener(OnReview); Debug.Log("SDKTest Started"); } @@ -406,6 +411,11 @@ eb68f93a08156e04 UnityBridgeFunc.MessengerShareLink("title", "content", "https://www.baidu.com"); } + private void OnReview() + { + UnityBridgeFunc.Review(); + } + /* public void OnTaBtn() { diff --git a/sdk-intergration/Packages/tysdk/Plugins/Android/ConfigManager.java b/sdk-intergration/Packages/tysdk/Plugins/Android/ConfigManager.java index a1fff3e..4559a7f 100644 --- a/sdk-intergration/Packages/tysdk/Plugins/Android/ConfigManager.java +++ b/sdk-intergration/Packages/tysdk/Plugins/Android/ConfigManager.java @@ -27,5 +27,5 @@ public class ConfigManager { public static final String PAY_TYPE_CALLBACK_FUNCTION_NAME = "SKUListResult"; public static final String FCM_NOTICE_FUNCTION_NAME = "FCMCallback"; public static final String FCM_REALNAME_CALLBACK_FUNCTION_NAME = "RealNameCallback"; - + } diff --git a/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java b/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java index 326708c..bf1791f 100644 --- a/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java +++ b/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java @@ -476,20 +476,125 @@ public class SDKManager { public static void Review() { - ReviewManager manager = ReviewManagerFactory.create(SDKWrapper.getInstance().getContext()); - Task request = manager.requestReviewFlow(); - request.addOnCompleteListener(reqTask -> { - if (reqTask.isSuccessful()) { - ReviewInfo reviewInfo = reqTask.getResult(); - Activity activity = UnityPlayer.currentActivity; - manager.launchReviewFlow(activity, reviewInfo); - } else { - @ReviewErrorCode int reviewErrorCode = ((ReviewException) request.getException()).getErrorCode(); - Log.e(TAG,"Review Error code: " + reviewErrorCode); + // ReviewManager manager = ReviewManagerFactory.create(SDKWrapper.getInstance().getContext()); + // Task request = manager.requestReviewFlow(); + // request.addOnCompleteListener(reqTask -> { + // if (reqTask.isSuccessful()) { + // ReviewInfo reviewInfo = reqTask.getResult(); + // Activity activity = UnityPlayer.currentActivity; + // manager.launchReviewFlow(activity, reviewInfo); + // } else { + // @ReviewErrorCode int reviewErrorCode = ((ReviewException) request.getException()).getErrorCode(); + // Log.e(TAG,"Review Error code: " + reviewErrorCode); + // } + // }); + // Runnable + RuStoreReview(); + } + //- Rustore相关接口 + public interface ReviewResultCallback { + void onReviewSuccess(JSONObject result); + void onReviewError(int code, String msg); + } + // # 第一步 请求评分request + public static void RequestRustoreReView(ReviewResultCallback callback) { + + JSONObject json = new JSONObject(); + try { + json.put("action", "ACTION_REQUEST_REVIEW"); + } catch (JSONException e) { + throw new RuntimeException(e); + } + SDKAPI.getIns().thirdExtend(json.toString(), (code, msg) -> { + Log.e(TAG, "====>RequestRustoreReView code= " + code + " msg= " + msg); + JSONObject result = new JSONObject(); + + try { + result.put("code", code); + if (code == SDKCallBack.Extend.EXTEND_CODE_SUCCESS) { + Log.e(TAG, "RequestRustoreReView Success: " + msg); + //获取成功,msg即为对应的json字符串 + // 成功时调用回调 + if (callback != null) { + callback.onReviewSuccess(result); + } + } else { + Log.e(TAG, "RequestRustoreReView Failed: " + msg); + result.put("thirdExtend_errStr", msg); + // 失败时调用回调 + if (callback != null) { + callback.onReviewError(code, msg); + } + } + //code 说明: + // 0 : 获取成功 + // 26012001 : RuStoreNotInstalledException + // 26012002 : RuStoreOutdatedException + // 26012003 : RuStoreUserUnauthorizedException + // 26012004 : RuStoreUserBannedException + // 26012005 : RuStoreApplicationBannedException + // 26012006 : RuStoreRequestLimitReached + // 26012007 : RuStoreReviewExists + // 26012008 : RuStoreInvalidReviewInfo + // 26012009 : RuStoreException + // -1 : 其他未知异常 + // msg 说明: + // 失败时为error msg + // UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.RUSTORE_REVIEW_CALLBACK, result.toString()); + } catch (Exception e) { + + SDKLog.e("SDKManager-RequestRustoreReView-Exception" + e); + // UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.RUSTORE_REVIEW_CALLBACK, result.toString()); } }); } + // # 第二步,展示评分UI 。请求评分request成功后,调用,且一次成功的request只能调用一次展示 + public static void LaunchRustoreView(){ + + JSONObject json = new JSONObject(); + try { + json.put("action", "ACTION_LAUNCH_REVIEW"); + } catch (JSONException e) { + throw new RuntimeException(e); + } + SDKAPI.getIns().thirdExtend(json.toString(), (code, msg) -> { + Log.e(TAG, "====>LaunchRustoreView code= " + code + " msg= " + msg); + JSONObject result = new JSONObject(); + try { + result.put("code", code); + if (code == SDKCallBack.Extend.EXTEND_CODE_SUCCESS) { + Log.e(TAG, "LaunchRustoreView Success: " + msg); + //获取成功,msg即为对应的json字符串 + // UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.RUSTORE_LAUNCH_REVIEW, result.toString()); + } else { + Log.e(TAG, "LaunchRustoreView Failed: " + msg); + result.put("thirdExtend_errStr", msg); + } + // UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.RUSTORE_LAUNCH_REVIEW, result.toString()); + } catch (Exception e) { + + SDKLog.e("SDKManager-LaunchRustoreReView-Exception" + e); + // UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.RUSTORE_LAUNCH_REVIEW, result.toString()); + } + + + }); + } + public static void RuStoreReview(){ + + RequestRustoreReView(new ReviewResultCallback() { + @Override + public void onReviewSuccess(JSONObject result) { + LaunchRustoreView(); + } + @Override + public void onReviewError(int code, String msg) { + + } + }); + } + public static void FBShareLink(String title, String content, String url) { Log.e(TAG,"FBShareLink : " + title + " " + content + " " + url); diff --git a/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs b/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs index 9cffef1..d6294f1 100644 --- a/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs +++ b/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs @@ -140,6 +140,11 @@ namespace tysdk public static bool IsLoggedIn => _accountInfo != null; + + // 记录一下渠道,保证客户端可以调用 + public static string Channel => "hwVkid"; + + //- public void Logout() { diff --git a/sdk-intergration/Packages/tysdk/Runtime/UnityBridgeFunc.cs b/sdk-intergration/Packages/tysdk/Runtime/UnityBridgeFunc.cs index 90401da..1ca4597 100644 --- a/sdk-intergration/Packages/tysdk/Runtime/UnityBridgeFunc.cs +++ b/sdk-intergration/Packages/tysdk/Runtime/UnityBridgeFunc.cs @@ -272,6 +272,7 @@ namespace tysdk using(var sdkManager = new AndroidJavaClass(SDK_CLASS)) { sdkManager.CallStatic("Review"); + // sdkManager.CallStataic("RuStoreReview"); } }