LoginHandler.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /*
  2. * @Author: mojunshou 1637302775@qq.com
  3. * @Date: 2025-04-11 10:15:45
  4. * @LastEditors: mojunshou 1637302775@qq.com
  5. * @LastEditTime: 2025-05-16 11:32:34
  6. * @Description: 登录管理
  7. */
  8. // LoginHandler.ts
  9. import { oops } from 'db://oops-framework/core/Oops';
  10. import { smc } from '../SingletonModuleComp';
  11. import { CocosHandler } from './CocosHandler';
  12. import { ServerHandler } from './ServerHandler';
  13. import { DCHandler } from './DCHandler';
  14. import { TableGameConfig } from '../table/TableGameConfig';
  15. export class LoginHandler {
  16. private static _inst: LoginHandler;
  17. private _tsGameConfig = new TableGameConfig();
  18. public static get inst(): LoginHandler {
  19. if (!this._inst) {
  20. this._inst = new LoginHandler();
  21. }
  22. return this._inst;
  23. }
  24. //获取当前版本状态
  25. async getVersionStatus() {
  26. const data = { method: 'system.debug.get' };
  27. const msg = await CocosHandler.inst.sendMessageToAndroid(data);
  28. const result = JSON.parse(msg);
  29. if (result.data.result) {
  30. smc.game.GameModel.isRelease = false;
  31. } else {
  32. smc.game.GameModel.isRelease = true;
  33. }
  34. }
  35. //关闭安卓启动页
  36. closeAndroidSplash() {
  37. const data = { method: 'start.scene.hide' };
  38. CocosHandler.inst.sendMessageToAndroid(data);
  39. }
  40. async getPrivacyStatus() {
  41. //这直接调关闭安卓
  42. this.closeAndroidSplash();
  43. const data = { method: 'privacy.grant.get' };
  44. const result = await CocosHandler.inst.sendMessageToAndroid(data);
  45. return JSON.parse(result);
  46. }
  47. async savePrivacyStatus(status: boolean) {
  48. const data = {
  49. method: 'privacy.grant.set',
  50. param: JSON.stringify({ granted: status })
  51. };
  52. const result = await CocosHandler.inst.sendMessageToAndroid(data);
  53. return JSON.parse(result);
  54. }
  55. openAgreement() {
  56. const type = smc.game.GameModel.protocolType;
  57. let url = "";
  58. this._tsGameConfig.init(1);
  59. if (type === 1) {
  60. url = this._tsGameConfig.gamePrivacyUrl;
  61. } else {
  62. url = this._tsGameConfig.gameProtocolUrl;
  63. }
  64. // const url = type === 1 ? oops.config.game.gamePrivacyUrl : oops.config.game.gameProtocolUrl;
  65. const data = {
  66. method: 'system.browser.open',
  67. param: JSON.stringify({ url })
  68. };
  69. CocosHandler.inst.sendMessageToAndroid(data, '打开协议链接');
  70. }
  71. async wechatLogin() {
  72. const param = {
  73. callback: {
  74. onSuccess: 'LoginHandler.inst.wechatLoginSuccess',
  75. onFail: 'LoginHandler.inst.wechatLoginFail'
  76. }
  77. };
  78. const data = {
  79. method: 'auth.wechat',
  80. param: JSON.stringify(param)
  81. };
  82. await CocosHandler.inst.sendMessageToAndroid(data, '微信登录');
  83. }
  84. wechatLoginSuccess(str: string) {
  85. //向服务器申请登录
  86. ServerHandler.inst.wxLogin(str);
  87. DCHandler.inst.reportData(3000004, 1001);
  88. }
  89. wechatLoginFail(str: number) {
  90. // console.log('[微信] 登录失败', str);
  91. switch (str) {
  92. case -5:
  93. oops.gui.toast('登录失败,微信未安装~');
  94. break;
  95. default:
  96. oops.gui.toast('登录失败,请稍后再试~');
  97. break
  98. }
  99. DCHandler.inst.reportData(3000004, 1002);
  100. }
  101. /**打开防沉迷*/
  102. openChildProtection() {
  103. const param = {
  104. callback: {
  105. onSuccess: 'LoginHandler.inst.openChildProtectionSuccess',
  106. onFail: 'LoginHandler.inst.openChildProtectionFail'
  107. }
  108. }
  109. const data = { method: 'sdk.realname.start', param: JSON.stringify(param) };
  110. CocosHandler.inst.sendMessageToAndroid(data, '打开防沉迷');
  111. }
  112. openChildProtectionSuccess(str: string) {
  113. console.log('[防沉迷] 打开成功', str);
  114. }
  115. openChildProtectionFail(str: number) {
  116. console.log('[防沉迷] 打开失败', str);
  117. }
  118. }
  119. window["LoginHandler"] = LoginHandler;