CocosHandler.ts 5.3 KB

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