platform.ts 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. import { Rect, sys, view } from "cc";
  2. import { JSB } from "cc/env";
  3. export function ISJSB() {
  4. return !!JSB;
  5. }
  6. /**
  7. * 平台功能
  8. */
  9. export namespace platform {
  10. /**
  11. * 检查权限
  12. */
  13. export function checkCPermissions() {
  14. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "checkCPermissions", "()V");
  15. }
  16. /**
  17. * 下载apk并安装
  18. * @param url 下载地址
  19. * @param saveName apk保存的名称
  20. */
  21. export function downloadAPK(url: string, saveName: string = "app.apk", visibility: boolean = false) {
  22. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "downloadAPK", "(Ljava/lang/String;Ljava/lang/String;Z)V", url, saveName, visibility);
  23. }
  24. /**
  25. * 展示激励视频
  26. */
  27. export function showRewardVideoAD() {
  28. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showRewardVideoAD", "()V");
  29. }
  30. /**
  31. * 展示插屏广告
  32. */
  33. export function showInterstutalAD() {
  34. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showInterstutalAD", "()V");
  35. }
  36. /**
  37. * 展示全屏广告
  38. */
  39. export function showFullScreenAD() {
  40. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showFullScreenAD", "()V");
  41. }
  42. /**
  43. * 展示横幅广告
  44. */
  45. export function showBannerAD() {
  46. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showBannerAD", "()V");
  47. }
  48. /**
  49. * 移除横幅广告
  50. */
  51. export function removeBannerAD() {
  52. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "removeBannerAD", "()V");
  53. }
  54. /**
  55. * 展示原生广告
  56. */
  57. export function showNativeAD() {
  58. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showNativeAD", "()V");
  59. }
  60. /**
  61. * 移除原生广告
  62. */
  63. export function removeNativeAD() {
  64. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "removeNativeAD", "()V");
  65. }
  66. /**
  67. * 移除开屏图
  68. */
  69. export function removeSplash() {
  70. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "removeSplash", "()V");
  71. }
  72. /**
  73. * 微信登录
  74. */
  75. export function wxLogin() {
  76. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "wxLogin", "()V");
  77. }
  78. /**
  79. * 微信分享
  80. */
  81. export function wxShare(url: string, title: string, descroption: string) {
  82. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "wxShare", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", url, title, descroption);
  83. }
  84. /**
  85. * 打开手机浏览器
  86. * @param url 跳转地址
  87. */
  88. export function openUrl(url: string) {
  89. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "openUrl", "(Ljava/lang/String;)V", url);
  90. }
  91. /**
  92. * 打开微信小程序
  93. * @param url 跳转地址
  94. */
  95. export function openWXApplets(userName: string, url: string) {
  96. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "openWXApplets", "(Ljava/lang/String;Ljava/lang/String;)V", userName, url);
  97. }
  98. /**
  99. * UM上报
  100. */
  101. export function umUp(eventId: string) {
  102. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "umBuriedPoint", "(Ljava/lang/String;)V", eventId);
  103. }
  104. /**
  105. * 试玩游戏
  106. */
  107. export function intoGameList(userId: string) {
  108. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "intoGameList", "(Ljava/lang/String;)V", userId);
  109. }
  110. /**
  111. * 复制字符串
  112. */
  113. export function copyText(text: string) {
  114. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "copyText", "(Ljava/lang/String;)V", text);
  115. }
  116. /**
  117. *互推下载
  118. */
  119. export function downloadFile(url: string, saveName: string = "app.apk", progressName: string) {
  120. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "downloadFile", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", url, saveName, progressName);
  121. }
  122. /**
  123. * 检测本地没有安装包
  124. * @param apkName
  125. * @returns
  126. */
  127. export function isExistAPK(apkName: string): boolean {
  128. if (ISJSB()) {
  129. return jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "isExistAPK", "(Ljava/lang/String;)Z", apkName);
  130. }
  131. return false;
  132. }
  133. /**
  134. * 检测本地有没有安装
  135. * @param packageName
  136. * @returns
  137. */
  138. export function isInstalled(packageName: string): boolean {
  139. if (ISJSB()) {
  140. return jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "isInstalled", "(Ljava/lang/String;)Z", packageName);
  141. }
  142. return false;
  143. }
  144. /**
  145. * 安装应用
  146. */
  147. export function installApp(apkName: string) {
  148. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "installApp", "(Ljava/lang/String;)V", apkName);
  149. }
  150. /**
  151. * 启动应用
  152. */
  153. export function startApp(packageName: string) {
  154. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "startApp", "(Ljava/lang/String;)V", packageName);
  155. }
  156. /**
  157. * 上报用户ID
  158. */
  159. export function setThinkingID(userId: string) {
  160. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "setThinkingID", "(Ljava/lang/String;)V", userId);
  161. }
  162. /**
  163. * 上报数数
  164. */
  165. export function reportThinking(eventName: string, data: string = "") {
  166. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "reportThinking", "(Ljava/lang/String;Ljava/lang/String;)V", eventName, data);
  167. }
  168. /**
  169. * 第一次接口上报数数
  170. */
  171. export function reportThinkingOnce(eventName: string, data: string = "") {
  172. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "reportThinkingOnce", "(Ljava/lang/String;Ljava/lang/String;)V", eventName, data);
  173. }
  174. /**
  175. * 上报用户数据到数数
  176. */
  177. export function reportThinkingUserInfo(userData: string) {
  178. ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "reportThinkingUserInfo", "(Ljava/lang/String;)V", userData);
  179. }
  180. }
  181. //SafeArea适配
  182. let getSafeAreaRect_old = sys.getSafeAreaRect;
  183. sys.getSafeAreaRect = function () {
  184. let rect: Rect = getSafeAreaRect_old();
  185. if (ISJSB()) {
  186. let offHeight = globalThis.notchRatio * view.getVisibleSize().height;
  187. rect.height -= (offHeight || 0);
  188. }
  189. console.log("============刘海屏适配" + rect);
  190. return rect;
  191. }