CocosHandler.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. import { native } from 'cc';
  2. import { _decorator, Component, Node } from 'cc';
  3. import { DeviceUtil } from 'db://oops-framework/core/utils/DeviceUtil';
  4. import { GameComponent } from 'db://oops-framework/module/common/GameComponent';
  5. import { smc } from '../SingletonModuleComp';
  6. import { ecs } from 'db://oops-framework/libs/ecs/ECS';
  7. import { Account } from '../../account/Account';
  8. const { ccclass, property } = _decorator;
  9. @ccclass('CocosHandler')
  10. export class CocosHandler extends GameComponent {
  11. // 单例模式
  12. private static instance: CocosHandler;
  13. public static getInstance(): CocosHandler {
  14. if (!CocosHandler.instance) {
  15. CocosHandler.instance = new CocosHandler();
  16. }
  17. return CocosHandler.instance;
  18. }
  19. // 处理 Android 发送的消息
  20. private onAndroidMessage(jsonStr: string) {
  21. const data = JSON.parse(jsonStr);
  22. console.log('Cocos 收到 Android 消息:', data);
  23. // 处理逻辑
  24. // 例如:根据 data 的内容执行不同的操作,不是每个回调都要处理
  25. }
  26. // 发送消息到 Android
  27. public async sendMessageToAndroid(json: Object) {
  28. if (DeviceUtil.isAndroid && DeviceUtil.isNative) {
  29. let jsonStr = JSON.stringify(json);
  30. console.log("js传给安卓的数据打印>>>>", jsonStr);
  31. let result = await native.reflection.callStaticMethod("com/cocos/game/AndroidHandler", "onCocosMessage", "(Ljava/lang/String;)Ljava/lang/String;", jsonStr);
  32. //等待上边安卓返回数据,再执行下边代码
  33. if (result) {
  34. let android_result = JSON.parse(result);
  35. console.log("安卓返回数据打印>>>>>", android_result);
  36. return android_result;
  37. }
  38. }
  39. }
  40. //显示广告
  41. showBannerAd() {
  42. }
  43. async login(username: string, password: string) {
  44. //区分普通登录,微信登录,游客登录
  45. let obj = {
  46. method: "login",
  47. callback: "StartViewComp.androidCallJs", //安卓完成业务的回调JS函数
  48. data: {
  49. username: username,
  50. password: password,
  51. type: 1 //登录类型
  52. }
  53. }
  54. let result = await this.sendMessageToAndroid(obj);
  55. return result;
  56. }
  57. //用户注册
  58. async user_register(username: string, password: string) {
  59. let obj = {
  60. method: "user_register",
  61. callback: "",
  62. data: {
  63. username: username,
  64. password: password
  65. }
  66. }
  67. let result = await this.sendMessageToAndroid(obj);
  68. return result;
  69. }
  70. //微信登录
  71. async wechat_login() {
  72. let obj = {
  73. method: "wechat_login",
  74. callback: "",
  75. data: {
  76. }
  77. }
  78. let result = await this.sendMessageToAndroid(obj);
  79. // let account = ecs.getEntity<Account>(Account);
  80. // account.AccountModel.AccountName
  81. // smc.account.AccountModel.AccountName =
  82. return result;
  83. }
  84. //用户提现
  85. async user_withdrawal(user_id: string) {
  86. let obj = {
  87. method: "user_withdrawal",
  88. callback: "",
  89. data: {
  90. }
  91. }
  92. let result = await this.sendMessageToAndroid(obj);
  93. return result;
  94. }
  95. //获取提现记录
  96. async get_withdrawal_record(user_id: string) {
  97. let obj = {
  98. method: "get_withdrawal_record",
  99. callback: "",
  100. data: {
  101. }
  102. }
  103. let result = await this.sendMessageToAndroid(obj);
  104. return result;
  105. }
  106. //获取用户信息
  107. async get_user_info(user_id: string) {
  108. let obj = {
  109. method: "get_user_info",
  110. callback: "",
  111. data: {
  112. user_id: user_id
  113. }
  114. }
  115. let result = await this.sendMessageToAndroid(obj);
  116. return result;
  117. }
  118. //现金提现
  119. async cash_withdrawal(user_id: string, amount: string) {
  120. let obj = {
  121. method: "cash_withdrawal",
  122. callback: "",
  123. data: {
  124. user_id: user_id,
  125. amount: amount
  126. }
  127. }
  128. let result = await this.sendMessageToAndroid(obj);
  129. return result;
  130. }
  131. //红包提现
  132. async red_packet_withdrawal(user_id: string, amount: string) {
  133. let obj = {
  134. method: "red_packet_withdrawal",
  135. callback: "",
  136. data: {
  137. user_id: user_id,
  138. amount: amount
  139. }
  140. }
  141. let result = await this.sendMessageToAndroid(obj);
  142. return result;
  143. }
  144. //复制文字
  145. async copy_text(text: string) {
  146. let obj = {
  147. method: "copy_text",
  148. callback: "",
  149. data: {
  150. text: text
  151. }
  152. }
  153. let result = await this.sendMessageToAndroid(obj);
  154. return result;
  155. }
  156. //获取远程CDN地址,这用和安卓交互
  157. //获取游戏数据信息--返回后才能进入游戏渲染数据,也可以登录后推送过来
  158. async get_game_data() {
  159. let obj = {
  160. method: "get_game_data",
  161. callback: "",
  162. data: {
  163. }
  164. }
  165. let result = await this.sendMessageToAndroid(obj);
  166. return result;
  167. }
  168. //安卓直接调用广告回调,显示失败还是成功,成功提供什么奖励,失败又怎么做
  169. async ad_callback(ad_type: string, ad_status: string, ad_reward: string) {
  170. }
  171. }
  172. window['CocosHandler'] = CocosHandler;