Bläddra i källkod

完善隐私协议逻辑

mojunshou 1 år sedan
förälder
incheckning
863f2223f7

+ 12 - 0
assets/script/game/common/config/AndroidEvent.ts

@@ -0,0 +1,12 @@
+/*
+ * @Author: mojunshou 1637302775@qq.com
+ * @Date: 2025-03-20 10:39:26
+ * @LastEditors: mojunshou 1637302775@qq.com
+ * @LastEditTime: 2025-03-20 10:53:36
+ * @Description: 安卓事件
+ */
+export enum AndroidEvent {
+    /** 同意隐私协议 */
+    AgreePrivacy = "agreePrivacy",
+}
+

+ 9 - 0
assets/script/game/common/config/AndroidEvent.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.24",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "ee7c5057-28e5-46fb-ac42-7622653f6205",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/script/game/common/manager.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "359ebe14-e83a-4c7e-b618-297cc1cd87f3",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 143 - 0
assets/script/game/common/manager/AndroidMessageCenter.ts

@@ -0,0 +1,143 @@
+import { _decorator } from 'cc';
+import { oops } from 'db://oops-framework/core/Oops';
+import { DeviceUtil } from 'db://oops-framework/core/utils/DeviceUtil';
+import { AndroidEvent } from '../config/AndroidEvent';
+
+/**
+ * 安卓消息处理中心
+ * 负责集中处理安卓平台相关的消息和事件
+ */
+export class AndroidMessageCenter {
+    private static _instance: AndroidMessageCenter | null = null;
+
+    private isInitialized: boolean = false;
+
+    private constructor() {
+        // 私有构造函数,确保单例模式
+    }
+
+    /**
+     * 获取单例实例
+     */
+    public static getInstance(): AndroidMessageCenter {
+        if (!this._instance) {
+            this._instance = new AndroidMessageCenter();
+        }
+        return this._instance;
+    }
+
+    /**
+     * 初始化安卓消息处理中心
+     */
+    public init(): void {
+        if (this.isInitialized) return;
+
+        oops.log.logConfig("AndroidMessageCenter", "初始化安卓消息处理中心");
+
+        // 只在安卓平台注册事件监听
+        if (DeviceUtil.isNative && DeviceUtil.isAndroid) {
+            this.registerEventListeners();
+        }
+
+        this.isInitialized = true;
+    }
+
+    /**
+     * 注册事件监听器
+     */
+    private registerEventListeners(): void {
+        // 监听返回按键事件
+        // oops.message.on(AndroidEvent.BACK_PRESSED, this.onBackPressed, this);
+
+        // // 监听应用暂停事件
+        // oops.message.on(AndroidEvent.APP_PAUSE, this.onAppPause, this);
+
+        // // 监听应用恢复事件
+        // oops.message.on(AndroidEvent.APP_RESUME, this.onAppResume, this);
+
+        // // 监听网络状态变化事件
+        // oops.message.on(AndroidEvent.NETWORK_CHANGE, this.onNetworkChange, this);
+
+        // 可以根据需要添加更多事件监听
+
+        oops.log.logConfig("AndroidMessageCenter", "注册安卓事件监听器成功");
+    }
+
+    // /**
+    //  * 处理返回按键事件
+    //  * @param data 事件数据
+    //  */
+    // private onBackPressed(data: any): void {
+    //     oops.log.logConfig("AndroidMessageCenter", "处理返回按键事件");
+    //     // 处理返回按键逻辑
+    //     // 例如:判断当前UI栈,决定是返回上一级还是弹出退出确认框
+    // }
+
+    // /**
+    //  * 处理应用暂停事件
+    //  * @param data 事件数据
+    //  */
+    // private onAppPause(data: any): void {
+    //     oops.log.logConfig("AndroidMessageCenter", "处理应用暂停事件");
+    //     // 处理应用暂停逻辑
+    //     // 例如:暂停游戏、保存数据等
+    // }
+
+    // /**
+    //  * 处理应用恢复事件
+    //  * @param data 事件数据
+    //  */
+    // private onAppResume(data: any): void {
+    //     oops.log.logConfig("AndroidMessageCenter", "处理应用恢复事件");
+    //     // 处理应用恢复逻辑
+    //     // 例如:恢复游戏状态、检查网络连接等
+    // }
+
+    // /**
+    //  * 处理网络状态变化事件
+    //  * @param data 事件数据
+    //  */
+    // private onNetworkChange(data: any): void {
+    //     oops.log.logConfig("AndroidMessageCenter", "处理网络状态变化事件");
+    //     // 处理网络状态变化逻辑
+    //     // 例如:显示网络断开提示、重新连接服务器等
+    // }
+
+    /**
+     * 向原生层发送消息
+     * @param eventName 事件名称
+     * @param data 事件数据
+     */
+    public sendToNative(eventName: string, data?: any): void {
+        if (!(DeviceUtil.isNative && DeviceUtil.isAndroid)) {
+            oops.log.logConfig("AndroidMessageCenter", "当前不是安卓平台,无法发送原生消息");
+            return;
+        }
+
+        const jsonData = data ? JSON.stringify(data) : "{}";
+        oops.log.logConfig("AndroidMessageCenter", `发送消息到原生端: ${eventName}, 数据: ${jsonData}`);
+
+        // 这里添加实际发送到原生端的代码
+        // 例如通过 JSB 调用原生方法
+    }
+
+    /**
+     * 清除所有事件监听(在游戏结束时调用)
+     */
+    public destroy(): void {
+        if (!this.isInitialized) return;
+
+        if (DeviceUtil.isNative && DeviceUtil.isAndroid) {
+            // 移除所有事件监听
+            // oops.message.off(AndroidEvent.BACK_PRESSED, this.onBackPressed, this);
+            // oops.message.off(AndroidEvent.APP_PAUSE, this.onAppPause, this);
+            // oops.message.off(AndroidEvent.APP_RESUME, this.onAppResume, this);
+            // oops.message.off(AndroidEvent.NETWORK_CHANGE, this.onNetworkChange, this);
+
+            // 移除其他可能添加的事件监听
+        }
+
+        this.isInitialized = false;
+        oops.log.logConfig("AndroidMessageCenter", "销毁安卓消息处理中心");
+    }
+} 

+ 9 - 0
assets/script/game/common/manager/AndroidMessageCenter.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.24",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "2fcd4970-521d-4aed-8f29-2fd99a3eb2ee",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 13 - 3
assets/script/game/common/tips/ClickEventHandler.ts

@@ -2,10 +2,12 @@
  * @Author: mojunshou 1637302775@qq.com
  * @Date: 2025-03-19 17:46:09
  * @LastEditors: mojunshou 1637302775@qq.com
- * @LastEditTime: 2025-03-19 18:01:56
+ * @LastEditTime: 2025-03-20 10:31:42
  * @Description: 用户协议和隐私协议点击事件
  */
+import { sys } from 'cc';
 import { _decorator, EventTouch } from 'cc';
+import { oops } from 'db://oops-framework/core/Oops';
 import { GameComponent } from "db://oops-framework/module/common/GameComponent";
 
 const { ccclass, property } = _decorator;
@@ -16,7 +18,15 @@ export class ClickEventHandler extends GameComponent {
 
     onClicked(eventTouch: EventTouch, param: string) {
         console.log("onClicked", param);
+        switch (param) {
+            case "User Agreement":
+                // 在游戏内打开用户协议
+                sys.openURL("https://store.cocos.com/app/detail/3814");
+                break;
+            case "Privacy Policy":
+                // 在游戏内打开隐私协议
+                sys.openURL("https://store.cocos.com/app/detail/3814");
+                break;
+        }
     }
-
-
 }

+ 14 - 8
assets/script/game/common/tips/KindTipsView.ts

@@ -2,13 +2,16 @@
  * @Author: mojunshou 1637302775@qq.com
  * @Date: 2025-03-19 18:02:51
  * @LastEditors: mojunshou 1637302775@qq.com
- * @LastEditTime: 2025-03-19 18:34:59
- * @Description: 隐私政策弹窗
+ * @LastEditTime: 2025-03-20 11:27:04
+ * @Description: 温馨提示弹窗
  */
 import { _decorator, Component, Node } from 'cc';
 import { oops } from 'db://oops-framework/core/Oops';
 import { GameComponent } from 'db://oops-framework/module/common/GameComponent';
 import { UIID } from '../config/GameUIConfig';
+import { sys } from 'cc';
+import { DeviceUtil } from 'db://oops-framework/core/utils/DeviceUtil';
+import { AndroidEvent } from '../config/AndroidEvent';
 const { ccclass, property } = _decorator;
 
 @ccclass('KindTipsView')
@@ -17,17 +20,20 @@ export class KindTipsView extends GameComponent {
         this.setButton();
     }
 
-    update(deltaTime: number) {
-
-    }
-
     private btn_agree() {
         console.log("同意");
+        // 同意后,将同意状态存储到本地
+        sys.localStorage.setItem("agree", "true");
+        // 是客户端就发送信息给安卓
+        if (DeviceUtil.isNative && DeviceUtil.isAndroid) {
+            // 发送信息给安卓
+            // sys.sendNativeEvent("agree");
+        }
+        // 关闭当前UI
+        oops.message.dispatchEvent(AndroidEvent.AgreePrivacy);
     }
 
     private btn_disagree() {
-        console.log("不同意");
-        //打开新的挽留弹窗
         oops.gui.open(UIID.Retention);
     }
 }

+ 30 - 15
assets/script/game/initialize/view/LoadingViewComp.ts

@@ -1,19 +1,23 @@
 /*
+ * @Author: mojunshou 1637302775@qq.com
+ * @Date: 2025-03-19 16:23:51
+ * @LastEditors: mojunshou 1637302775@qq.com
+ * @LastEditTime: 2025-03-20 11:25:31
+ * @Description: 
+ */
+/*
  * @Author: dgflash
  * @Date: 2021-07-03 16:13:17
  * @LastEditors: mojunshou 1637302775@qq.com
- * @LastEditTime: 2025-03-19 18:33:16
+ * @LastEditTime: 2025-03-20 10:35:58
  */
-import { _decorator } from "cc";
+import { _decorator, sys } from "cc";
 import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops";
 import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
 import { CCVMParentComp } from "../../../../../extensions/oops-plugin-framework/assets/module/common/CCVMParentComp";
-import { ModuleUtil } from "../../../../../extensions/oops-plugin-framework/assets/module/common/ModuleUtil";
-import { DemoViewComp } from "../../account/view/DemoViewComp";
-import { smc } from "../../common/SingletonModuleComp";
 import { UIID } from "../../common/config/GameUIConfig";
-import { EventTouch } from "cc";
-import { sys } from "cc";
+import { AndroidMessageCenter } from '../../common/manager/AndroidMessageCenter';
+import { AndroidEvent } from "../../common/config/AndroidEvent";
 
 const { ccclass, property } = _decorator;
 
@@ -21,11 +25,6 @@ const { ccclass, property } = _decorator;
 @ccclass('LoadingViewComp')
 @ecs.register('LoadingView', false)
 export class LoadingViewComp extends CCVMParentComp {
-
-
-
-
-
     /** VM 组件绑定数据 */
     data: any = {
         /** 加载资源当前进度 */
@@ -43,20 +42,36 @@ export class LoadingViewComp extends CCVMParentComp {
     start() {
         this.enter();
         this.setButton();
+
+        // 初始化安卓消息处理中心
+        AndroidMessageCenter.getInstance().init();
     }
 
     enter() {
+        this.addEvent();
         //查看缓存有没有同意过
         let data = sys.localStorage.getItem("agree");
         if (!data) {
             //打开温馨提示
             oops.gui.open(UIID.KindTips);
+            return;
         }
+    }
+
 
 
-        // let data = oops.storage.get("agree");
-        console.log("data>>>>>>>>>>", data);
-        oops.log.logView("data>>>>>>>>>>", data);
+    private addEvent() {
+        this.on(AndroidEvent.AgreePrivacy, this.onAgreePrivacy, this);
+
+    }
+
+    private onAgreePrivacy() {
+        console.log("同意隐私协议");
+        // 同意后,将同意状态存储到本地
+        sys.localStorage.setItem("agree", "true");
+        // 是客户端就发送信息给安卓
+        //关闭当前UI
+        oops.gui.remove(UIID.KindTips);
         this.loadRes();
     }