LoginHandler.ts 3.8 KB

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