kaka 4 лет назад
Родитель
Сommit
68a4138601
27 измененных файлов с 568 добавлено и 53 удалено
  1. 3 1
      assets/script/game/module/login/Login.ts
  2. 26 0
      assets/script/mk/system/JsbSystem.ts
  3. BIN
      build/jsb-link/assets/main/index.jsc
  4. 0 0
      build/jsb-link/assets/resources/config.json
  5. 0 0
      build/jsb-link/assets/resources/import/23/2301f946-ef9d-4d93-b296-1f8ff5b307d3.json
  6. 0 0
      build/jsb-link/assets/resources/import/4f/4f28d7f3-1d28-4320-bf91-516bb05e0c01.json
  7. 0 0
      build/jsb-link/assets/resources/import/72/72481e4b-bb87-4bc0-9455-9c0f34848370.json
  8. 0 0
      build/jsb-link/assets/resources/import/b9/b909c955-7722-48c8-abeb-eb1ddf0190f1.json
  9. 0 0
      build/jsb-link/assets/resources/import/df/dfae673b-58f8-4120-89e8-10c9892eb0a6.json
  10. 0 0
      build/jsb-link/assets/resources/import/f5/f5c0b09e-7ed9-41a5-aa98-47b18e3423f9.json
  11. BIN
      build/jsb-link/frameworks/runtime-src/proj.android-studio/.idea/caches/build_file_checksums.ser
  12. 2 1
      build/jsb-link/frameworks/runtime-src/proj.android-studio/.idea/modules/app/app-kxnly.iml
  13. 10 10
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/AndroidManifest.xml
  14. 2 1
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/build.gradle
  15. BIN
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/libs/YSDK/YSDK_Android_1.8.1_79033d3d.aar
  16. BIN
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/libs/YSDK/ysdkshell.aar
  17. BIN
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/main/assets/MidasPay.zip
  18. 36 0
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/main/assets/ysdkconf.ini
  19. 2 5
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/AppActivity.java
  20. 8 2
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/thirdSdk/ThirdSdkMgr.java
  21. 133 0
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/thirdSdk/ysdk/YSDKCallback.java
  22. 196 0
      build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/thirdSdk/ysdk/YSDKMgr.java
  23. BIN
      build/jsb-link/frameworks/runtime-src/proj.android-studio/res.zip
  24. 29 0
      build/jsb-link/frameworks/runtime-src/proj.android-studio/res/layout/pop_window_web_layout.xml
  25. 118 30
      build/jsb-link/js backups (useful for debugging)/main.index.js
  26. 2 2
      packages-hot-update/cfg.json
  27. 1 1
      settings/project.json

+ 3 - 1
assets/script/game/module/login/Login.ts

@@ -114,7 +114,9 @@ export default class Login extends cc.Component {
         if (gData.loginData.popIdentifySwitch) {
             if (!this.hasCheckAnti) {
                 this.hasCheckAnti = true
-                this.checkShowIdentification()
+                // this.checkShowIdentification()
+                JsbSystem.ysdkInit();
+                JsbSystem.autologin();
             }
 
             if (!gData.loginData.passAnti) {

+ 26 - 0
assets/script/mk/system/JsbSystem.ts

@@ -12,6 +12,9 @@ export default class JsbSystem {
     /**代码桥在IOS中的路径 */
     private static _JSB_IOS_PATH: string = "ThirdSdkMgr";
 
+    /**代码桥在AS中的路径 */
+    private static _JSB_ANDROID_PATH_JSDK: string = "org/cocos2dx/javascript/thirdSdk/ysdk/YSDKMgr";
+
     //callBack
     public static callBack: Function = null;
 
@@ -583,6 +586,29 @@ export default class JsbSystem {
             // jsb.reflection.callStaticMethod("GameConfig", "sharePic:", "");
         }
     }
+
+    /** 打开微信 */
+    public static ysdkInit() {
+        if (cc.sys.os == cc.sys.OS_ANDROID) {
+            this.callStaticMethod(this._JSB_ANDROID_PATH_JSDK, "init", "()V");
+        }
+        else if (cc.sys.os == cc.sys.OS_IOS) {
+            this.callStaticMethod("AppController", "init", "");
+        }
+    }
+
+    public static autologin() {
+        if (cc.sys.os == cc.sys.OS_ANDROID) {
+            this.callStaticMethod(this._JSB_ANDROID_PATH_JSDK, "autologin", "()V");
+        }
+        else if (cc.sys.os == cc.sys.OS_IOS) {
+            this.callStaticMethod("AppController", "autologin", "");
+        }
+    }
+
+    public static ysdkAuthSuccess() {
+        gData.loginData.passAnti = true;
+    }
 }
 
 window['JsbMgr'] = JsbSystem

BIN
build/jsb-link/assets/main/index.jsc


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/jsb-link/assets/resources/config.json


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/jsb-link/assets/resources/import/23/2301f946-ef9d-4d93-b296-1f8ff5b307d3.json


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/jsb-link/assets/resources/import/4f/4f28d7f3-1d28-4320-bf91-516bb05e0c01.json


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/jsb-link/assets/resources/import/72/72481e4b-bb87-4bc0-9455-9c0f34848370.json


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/jsb-link/assets/resources/import/b9/b909c955-7722-48c8-abeb-eb1ddf0190f1.json


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/jsb-link/assets/resources/import/df/dfae673b-58f8-4120-89e8-10c9892eb0a6.json


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/jsb-link/assets/resources/import/f5/f5c0b09e-7ed9-41a5-aa98-47b18e3423f9.json


BIN
build/jsb-link/frameworks/runtime-src/proj.android-studio/.idea/caches/build_file_checksums.ser


+ 2 - 1
build/jsb-link/frameworks/runtime-src/proj.android-studio/.idea/modules/app/app-kxnly.iml

@@ -316,7 +316,8 @@
     <orderEntry type="library" name="Gradle: ./app/libs/umeng/umeng-abtest-v1.0.0.aar" level="project" />
     <orderEntry type="library" name="Gradle: ./app/libs/umeng/umeng-asms-armeabi-v1.2.3.aar" level="project" />
     <orderEntry type="library" name="Gradle: ./app/libs/aliRisk/Android-AliyunDevice-10017.aar" level="project" />
-    <orderEntry type="library" name="Gradle: com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.8.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: ./app/libs/YSDK/ysdkshell.aar" level="project" />
+    <orderEntry type="library" name="Gradle: ./app/libs/YSDK/YSDK_Android_1.8.1_79033d3d.aar" level="project" />
     <orderEntry type="library" name="Gradle: com.google.android.material:material:1.0.0@aar" level="project" />
     <orderEntry type="library" name="Gradle: androidx.appcompat:appcompat:1.0.0@aar" level="project" />
     <orderEntry type="library" name="Gradle: androidx.multidex:multidex:2.0.0@aar" level="project" />

+ 10 - 10
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/AndroidManifest.xml

@@ -54,16 +54,16 @@
             </intent-filter>
         </activity>
 
-<!--        &lt;!&ndash; TODO GAME SDK接入YSDK初始化配置 START &ndash;&gt;-->
-<!--        &lt;!&ndash; TODO android:value 要修改为游戏自身的MainActivity的完整路径,如YSDKDEMO的MainAcitiviy路径为com.tencent.tmgp.yybtestsdk.MainActivity &ndash;&gt;-->
-<!--        &lt;!&ndash; 如果AndroidManifest.xml配置MainActivity无效,可手动在LaunchActivity的onCreate()中调用YSDKApi.setMainActivity()接口设置游戏的MainActivity-->
-<!--             示例:YSDKApi.setMainActivity("com.tencent.tmgp.yybtestsdk.MainActivity"); &ndash;&gt;-->
-<!--        &lt;!&ndash; TODO 此处涉及到游客模式弹窗、悬浮球、宝券等弹窗的实现,要修改为玩家玩游戏的activity &ndash;&gt;-->
-<!--        <meta-data-->
-<!--            android:name="org.cocos2dx.javascript.AppActivity"-->
-<!--            android:value="${applicationId}.AppActivity" />-->
-
-<!--        &lt;!&ndash; TODO GAME SDK接入YSDK初始化配置 END &ndash;&gt;-->
+        <!-- TODO GAME SDK接入YSDK初始化配置 START -->
+        <!-- TODO android:value 要修改为游戏自身的MainActivity的完整路径,如YSDKDEMO的MainAcitiviy路径为com.tencent.tmgp.yybtestsdk.MainActivity -->
+        <!-- 如果AndroidManifest.xml配置MainActivity无效,可手动在LaunchActivity的onCreate()中调用YSDKApi.setMainActivity()接口设置游戏的MainActivity
+             示例:YSDKApi.setMainActivity("com.tencent.tmgp.yybtestsdk.MainActivity"); -->
+        <!-- TODO 此处涉及到游客模式弹窗、悬浮球、宝券等弹窗的实现,要修改为玩家玩游戏的activity -->
+        <meta-data
+            android:name="MAIN_ACTIVITY"
+            android:value="${applicationId}.AppActivity" />
+
+        <!-- TODO GAME SDK接入YSDK初始化配置 END -->
 
         <activity
             android:name="com.aries.kxnly.mz.wxapi.WXEntryActivity"

+ 2 - 1
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/build.gradle

@@ -165,7 +165,7 @@ dependencies {
     implementation project(':libcocos2dx')
 
     //微信SDK(自动集成)
-    api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
+//    api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
 
     //聚合SDK(手动导入SDK包)
     api 'androidx.appcompat:appcompat:1.0.0' //Gradle中要补充Support v7插件的引入,否则会集成失败
@@ -190,4 +190,5 @@ dependencies {
 //    //ysdk
 //    implementation fileTree(dir: 'libs/ysdk', include: ['*.jar', '*.aar'])
 //    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+    api fileTree(include: ['*.jar','*.aar'], dir: 'libs/YSDK')
 }

BIN
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/libs/YSDK/YSDK_Android_1.8.1_79033d3d.aar


BIN
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/libs/YSDK/ysdkshell.aar


BIN
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/main/assets/MidasPay.zip


+ 36 - 0
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/main/assets/ysdkconf.ini

@@ -0,0 +1,36 @@
+;**************游戏相关配置, 游戏需要根据各自情况修改 START **********
+;游戏的QQAPPID
+QQ_APP_ID=1104936059
+
+;游戏的微信APPID
+WX_APP_ID=wxfcefed3f366fa606
+
+;游戏的OFFER_ID
+OFFER_ID=1104936059
+;***************游戏配置项, 游戏需要根据各自情况修改 END **************
+
+;************* YSDK相关配置项,游戏需要根据各自情况修改 START **********
+;联调环境
+;YSDK_URL=https://ysdktest.qq.com
+YSDK_URL=https://ysdk.qq.com
+;************** YSDK相关配置项,游戏需要根据各自情况修改 END **************
+
+;YSDK游戏内Icon开关
+YSDK_ICON_SWITCH=true
+
+;YSDK游戏内WebView Debug开关
+
+;YSDK游戏内Icon截图按钮展示开关
+YSDK_ICON_CAPTURE_SWITCH=false
+
+;YSDK游戏内Icon位置单位dp
+YSDK_ICON_LOCATION=100
+
+;YSDK游戏内场景
+YSDK_IMMERSIVE_ICON_SWITCH=true
+
+;YSDK H5游戏支持模式
+YSDK_H5GAME_SWITCH=false
+
+;YSDK 防沉迷开关
+YSDK_ANTIADDICTION_SWITCH=true

+ 2 - 5
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/AppActivity.java

@@ -55,6 +55,7 @@ import androidx.core.content.FileProvider;
 
 
 import com.aries.kxnly.mz.BuildConfig;
+import com.tencent.ysdk.api.YSDKApi;
 
 import java.io.File;
 
@@ -92,10 +93,6 @@ public class AppActivity extends Cocos2dxActivity {
 //        YSDKApi.setMainActivity("org.cocos2dx.javascript.AppActivity");
     }
 
-    public void initYSDK(){
-//        YSDKApi.init(true);
-    }
-
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event)
     {
@@ -150,7 +147,7 @@ public class AppActivity extends Cocos2dxActivity {
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
         SDKWrapper.getInstance().onActivityResult(requestCode, resultCode, data);
-//        YSDKApi.onActivityResult(requestCode, resultCode, data);
+        YSDKApi.onActivityResult(requestCode, resultCode, data);
     }
 
     @Override

+ 8 - 2
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/thirdSdk/ThirdSdkMgr.java

@@ -296,7 +296,13 @@ public class ThirdSdkMgr {
         WXEntryActivity.getInstance().WxUrlShare(url,title, desc,imgUrl,1);
     }
 
-    public static void initYSDK(){
-        appActivity.initYSDK();
+    public static void  ysdkAuthSuccess(){
+        ThirdSdkMgr.appActivity.runOnGLThread(new Runnable() {
+            @Override
+            public void run() {
+                Cocos2dxJavascriptJavaBridge.evalString(cocosJsbMgrName + "ysdkAuthSuccess();");
+                Log.d("TTTTTTT", "ysdkAuthSuccess ");
+            }
+        });
     }
 }

+ 133 - 0
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/thirdSdk/ysdk/YSDKCallback.java

@@ -0,0 +1,133 @@
+package org.cocos2dx.javascript.thirdSdk.ysdk;
+
+import android.util.Log;
+
+import com.tencent.ysdk.api.YSDKApi;
+import com.tencent.ysdk.framework.common.eFlag;
+import com.tencent.ysdk.module.antiaddiction.listener.AntiAddictListener;
+import com.tencent.ysdk.module.antiaddiction.model.AntiAddictRet;
+import com.tencent.ysdk.module.user.PersonInfo;
+import com.tencent.ysdk.module.user.UserListener;
+import com.tencent.ysdk.module.user.UserLoginRet;
+import com.tencent.ysdk.module.user.UserRelationRet;
+import com.tencent.ysdk.module.user.WakeupRet;
+
+import org.cocos2dx.javascript.thirdSdk.ThirdSdkMgr;
+
+
+/**
+ * TODO GAME 游戏需要根据自己的逻辑实现自己的YSDKCallback对象。
+ * YSDK通过UserListener抽象类中的方法将授权或查询结果回调给游戏。
+ * 游戏根据回调结果调整UI等。只有设置回调,游戏才能收到YSDK的响应。
+ * 这里是Java层回调(设置了Java层回调会优先调用Java层回调, 如果要使用C++层回调则不能设置Java层回调)
+ */
+public class YSDKCallback implements UserListener, AntiAddictListener {
+
+    public void OnLoginNotify(UserLoginRet ret) {
+        Log.d("==[YSDK_LOGIN", "OnLoginNotify-------------------------" + ret.toString());
+        switch (ret.flag) {
+            case eFlag.Succ:
+                if (ret.getLoginType() != UserLoginRet.LOGIN_TYPE_TIMER) {
+                    // 定时登录,不需要设置防沉迷统计开始
+                    YSDKApi.setAntiAddictGameStart();
+                }
+                //这里处理实名认证成功逻辑
+                ThirdSdkMgr.ysdkAuthSuccess();
+                break;
+            case eFlag.Login_NeedRegisterRealName:
+                // 未实名认证,需要进行实名认证
+                break;
+            case eFlag.Login_User_Logout:
+                // 用户手动退出登录(用于用户游客体验模式下,提醒用户退出登录完成实名认证
+                break;
+            default:
+                // 显示登录界面
+                ThirdSdkMgr.ysdkAuthSuccess();
+                break;
+        }
+    }
+
+    public void OnWakeupNotify(WakeupRet ret) {
+        // TODO GAME 游戏需要在这里增加处理异账号的逻辑
+        if (eFlag.Wakeup_YSDKLogining == ret.flag) {
+            // 用拉起的账号登录,登录结果在OnLoginNotify()中回调
+        } else if (ret.flag == eFlag.Wakeup_NeedUserSelectAccount) {
+            // 异账号时,游戏需要弹出提示框让用户选择需要登录的账号
+
+        } else if (ret.flag == eFlag.Wakeup_NeedUserLogin) {
+            // 没有有效的票据,登出游戏让用户重新登录
+
+        } else {
+
+        }
+    }
+
+    @Override
+    public void OnRelationNotify(UserRelationRet relationRet) {
+        final String lineBreak = "\n";
+        StringBuilder builder = new StringBuilder();
+        builder.append("flag:").append(relationRet.flag).append(lineBreak)
+                .append("msg:").append(relationRet.msg).append(lineBreak)
+                .append("platform:").append(relationRet.platform).append(lineBreak);
+
+        if (relationRet.persons != null && relationRet.persons.size() > 0) {
+            PersonInfo personInfo = (PersonInfo) relationRet.persons.firstElement();
+            builder.append("UserInfoResponse json:").append(lineBreak)
+                    .append("nick_name: ").append(personInfo.nickName).append(lineBreak)
+                    .append("open_id: ").append(personInfo.openId).append(lineBreak)
+                    .append("userId: ").append(personInfo.userId).append(lineBreak)
+                    .append("gender: ").append(personInfo.gender).append(lineBreak)
+                    .append("picture_small: ").append(personInfo.pictureSmall).append(lineBreak)
+                    .append("picture_middle: ").append(personInfo.pictureMiddle).append(lineBreak)
+                    .append("picture_large: ").append(personInfo.pictureLarge).append(lineBreak)
+                    .append("provice: ").append(personInfo.province).append(lineBreak)
+                    .append("city: ").append(personInfo.city).append(lineBreak)
+                    .append("country: ").append(personInfo.country).append(lineBreak);
+        } else {
+            builder.append("relationRet.persons is bad");
+        }
+//        Log.d(YSDKDemoApi.TAG, "OnRelationNotify" + builder.toString());
+
+        // 发送结果到结果展示界面
+//        YSDKDemoApi.sShowView.showResult(builder.toString(), YSDKDemoApi.sLastFunction);
+    }
+
+    @Override
+    public void onTimeLimitNotify(AntiAddictRet ret) {
+
+        if (AntiAddictRet.RET_SUCC == ret.ret) {
+            // 防沉迷指令
+            switch (ret.ruleFamily) {
+                case AntiAddictRet.RULE_WORK_TIP:
+                case AntiAddictRet.RULE_WORK_NO_PLAY:
+                case AntiAddictRet.RULE_HOLIDAY_TIP:
+                case AntiAddictRet.RULE_HOLIDAY_NO_PLAY:
+                case AntiAddictRet.RULE_NIGHT_NO_PLAY:
+                case AntiAddictRet.RULE_GUEST:
+                default:
+                    //处理防沉迷
+                    break;
+            }
+        }
+    }
+
+    @Override
+    public void onLoginLimitNotify(AntiAddictRet ret) {
+
+        if (AntiAddictRet.RET_SUCC == ret.ret) {
+            // 防沉迷指令
+            switch (ret.ruleFamily) {
+                case AntiAddictRet.RULE_WORK_TIP:
+                case AntiAddictRet.RULE_WORK_NO_PLAY:
+                case AntiAddictRet.RULE_HOLIDAY_TIP:
+                case AntiAddictRet.RULE_HOLIDAY_NO_PLAY:
+                case AntiAddictRet.RULE_NIGHT_NO_PLAY:
+                case AntiAddictRet.RULE_GUEST:
+                default:
+                    //处理防沉迷
+                    break;
+            }
+
+        }
+    }
+}

+ 196 - 0
build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/thirdSdk/ysdk/YSDKMgr.java

@@ -0,0 +1,196 @@
+package org.cocos2dx.javascript.thirdSdk.ysdk;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.graphics.drawable.BitmapDrawable;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.View;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.Button;
+import android.widget.PopupWindow;
+
+import com.aries.kxnly.mz.R;
+import com.tencent.ysdk.api.YSDKApi;
+import com.tencent.ysdk.framework.common.ePlatform;
+import com.tencent.ysdk.module.antiaddiction.listener.AntiAddictListener;
+import com.tencent.ysdk.module.antiaddiction.model.AntiAddictRet;
+import com.tencent.ysdk.module.user.UserListener;
+import com.tencent.ysdk.module.user.UserLoginRet;
+
+import org.cocos2dx.javascript.AppActivity;
+import org.cocos2dx.javascript.thirdSdk.ThirdSdkMgr;
+import org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge;
+
+import java.lang.ref.WeakReference;
+
+public class YSDKMgr {
+
+    /**
+     // ysdk提供了两种自动登录的方式,通过YSDKApi.init(autoLogin)进行控制。
+     // 1. 当调用YSDKApi.init()及YSDKApi.init(true)时,将会启动YSDK内部的自动登录能力,
+     // 当开发者第一次通过YSDKApi.setUserListener()设置不为空的监听器后,YSDK会读取DB的缓存数据进行登录
+     // 2. 当调用YSDKApi.init(false)时,将会关闭YSDK内部的自动登录能力,开发者需要根据业务需求手动调用YSDKApi.autoLogin()
+     // 进行自动登录,并且需要注意,如果开发者使用这种模式但不调用YSDKApi.autoLogin()进行自动登录时,将会影响云游戏的体验.
+     *
+     */
+    private static boolean autoLoginByYSDK = false;
+
+    // TODO: 应用接入时,必须提供这几个回调监听
+    public static UserListener sUserListener;
+    public static AntiAddictListener sAntiAddictListener;
+
+    public static void init()
+    {
+        Log.d("==[YSDKMgr", "init: ");
+        // TODO GAME 防沉迷调试的日志,上线前需要关闭
+        YSDKApi.setAntiAddictLogEnable(true);
+
+        // 初始化
+        YSDKApi.init(autoLoginByYSDK);
+        // 设置回调接口
+        YSDKCallback callback = new YSDKCallback();
+        YSDKMgr.sUserListener = callback;
+        YSDKMgr.sAntiAddictListener= callback;
+        // 全局回调类,游戏自行实现
+        YSDKApi.setUserListener(YSDKMgr.sUserListener);
+        YSDKApi.setAntiAddictListener(YSDKMgr.sAntiAddictListener);
+    }
+
+    public static void autologin()
+    {
+        //账号登录模式
+        YSDKApi.login(ePlatform.Guest);
+    }
+
+    public static void getLoginRecord()
+    {
+        UserLoginRet ret = new UserLoginRet();
+        YSDKApi.getLoginRecord(ret);
+        Log.d("==[YSDKMgr", "flag: " + ret.flag);
+        Log.d("==[YSDKMgr", "platform: " + ret.platform);
+        Log.d("==[YSDKMgr", "ret.toString: " + ret.toString());
+    }
+
+    //主Activity
+    public static final AppActivity curAppActivity = new WeakReference<>(ThirdSdkMgr.appActivity).get();
+    public static void showRealNameAlertDialog()
+    {
+        YSDKMgr.curAppActivity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                AlertDialog.Builder builder = new AlertDialog.Builder(YSDKMgr.curAppActivity);
+                builder.setTitle("实名认证提醒");
+                builder.setMessage("根据国家防沉迷通知的相关要求,所有用户必须使用真实有效身份信息进行实名认证,建议您完成认证再进行游戏。");
+                builder.setPositiveButton("前往认证",
+                        new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface dialog,
+                                                int whichButton) {
+                                //再次请求实名认证
+                                autologin();
+                            }
+                        });
+                builder.setNeutralButton("退出游戏",
+                        new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface dialog,
+                                                int whichButton) {
+                                //退出游戏
+                                System.exit(0);
+                            }
+                        });
+                builder.show();
+            }
+        });
+    }
+
+    // 防沉迷指令执行状态
+    public static boolean mAntiAddictExecuteState = false;
+    public static void limitNotify(AntiAddictRet ret)
+    {
+        final int modal = ret.modal;
+        switch (ret.type) {
+            // 指令-弹提示
+            case AntiAddictRet.TYPE_TIPS:
+                if (!mAntiAddictExecuteState) {
+                    mAntiAddictExecuteState = true;
+                    AlertDialog.Builder builder = new AlertDialog.Builder(YSDKMgr.curAppActivity);
+                    builder.setTitle(ret.title);
+                    builder.setMessage(ret.content);
+                    builder.setPositiveButton("知道了",
+                            new DialogInterface.OnClickListener() {
+                                public void onClick(DialogInterface dialog,
+                                                    int whichButton) {
+                                    //设置防沉迷指令执行状态为false
+                                    mAntiAddictExecuteState = false;
+                                }
+                            });
+                    builder.setCancelable(false);
+                    builder.show();
+                    // 已执行指令
+                    YSDKApi.reportAntiAddictExecute(ret, System.currentTimeMillis());
+                }
+                break;
+            // 指令-强制用户下线
+            case AntiAddictRet.TYPE_LOGOUT:
+                if (!mAntiAddictExecuteState) {
+                    mAntiAddictExecuteState = true;
+                    AlertDialog.Builder builder = new AlertDialog.Builder(YSDKMgr.curAppActivity);
+                    builder.setTitle(ret.title);
+                    builder.setMessage(ret.content);
+                    builder.setPositiveButton("知道了",
+                            new DialogInterface.OnClickListener() {
+                                public void onClick(DialogInterface dialog,
+                                                    int whichButton) {
+                                    // 强制用户下线
+                                    mAntiAddictExecuteState = false;
+                                    //这边自定义处理逻辑
+                                }
+                            });
+                    builder.setCancelable(false);
+                    builder.show();
+                    // 已执行指令
+                    YSDKApi.reportAntiAddictExecute(ret, System.currentTimeMillis());
+                }
+                break;
+            // 指令-打开一个webview页面
+            case AntiAddictRet.TYPE_OPEN_URL:
+                if (!mAntiAddictExecuteState) {
+                    mAntiAddictExecuteState = true;
+                    View popwindowView = View.inflate(YSDKMgr.curAppActivity, R.layout.pop_window_web_layout, null);
+                    WebView webView = popwindowView.findViewById(R.id.pop_window_webview);
+
+                    WebSettings settings = webView.getSettings();
+                    settings.setJavaScriptEnabled(true);
+                    webView.setWebViewClient(new WebViewClient());
+                    webView.loadUrl(ret.url);
+
+                    final PopupWindow popupWindow = new PopupWindow(popwindowView, 1000, 1000);
+                    popupWindow.setTouchable(true);
+                    popupWindow.setOutsideTouchable(false);
+                    popupWindow.setBackgroundDrawable(new BitmapDrawable());
+
+                    Button closeButton = popwindowView.findViewById(R.id.pop_window_close);
+                    closeButton.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View v) {
+                            if (modal == 1) {
+                                //这边自定义处理逻辑
+                            }
+                            popupWindow.dismiss();
+                            mAntiAddictExecuteState = false;
+                        }
+                    });
+
+                    popupWindow.showAtLocation(popwindowView, Gravity.CENTER, 0, 0);
+                    // 已执行指令
+                    YSDKApi.reportAntiAddictExecute(ret, System.currentTimeMillis());
+                }
+                break;
+            default:
+                // do nothing
+                break;
+        }
+    }
+}

BIN
build/jsb-link/frameworks/runtime-src/proj.android-studio/res.zip


+ 29 - 0
build/jsb-link/frameworks/runtime-src/proj.android-studio/res/layout/pop_window_web_layout.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@android:color/transparent"
+        android:gravity="center">
+
+        <WebView
+            android:id="@+id/pop_window_webview"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+
+        <Button
+            android:id="@+id/pop_window_close"
+            android:layout_width="24dp"
+            android:layout_height="24dp"
+            android:layout_alignRight="@id/pop_window_webview"
+            android:layout_alignTop="@id/pop_window_webview"
+            android:background="@drawable/com_tencent_ysdk_icon_h5_xx" />
+    </RelativeLayout>
+
+
+</LinearLayout>

Разница между файлами не показана из-за своего большого размера
+ 118 - 30
build/jsb-link/js backups (useful for debugging)/main.index.js


+ 2 - 2
packages-hot-update/cfg.json

@@ -9,7 +9,7 @@
         "https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/EasyEliminate/baseRemote/",
         "https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/kxnlyTest/baseRemote/"
     ],
-    "buildTime": 1632359385896,
-    "genTime": 1632359385896,
+    "buildTime": 1632392279784,
+    "genTime": 1632392279784,
     "genVersion": null
 }

+ 1 - 1
settings/project.json

@@ -36,6 +36,6 @@
       "enable": false
     }
   },
-  "last-module-event-record-time": 1631780929652,
+  "last-module-event-record-time": 1632387581526,
   "start-scene": "6f522a54-3e0e-404d-a06c-bec8b4307c95"
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов