import { Rect, sys, view } from "cc"; import { JSB } from "cc/env"; export function ISJSB() { return !!JSB; } /** * 平台功能 */ export namespace platform { /** * 检查权限 */ export function checkCPermissions() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "checkCPermissions", "()V"); } /** * 下载apk并安装 * @param url 下载地址 * @param saveName apk保存的名称 */ export function downloadAPK(url: string, saveName: string = "app.apk", visibility: boolean = false) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "downloadAPK", "(Ljava/lang/String;Ljava/lang/String;Z)V", url, saveName, visibility); } /** * 展示激励视频 */ export function showRewardVideoAD() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showRewardVideoAD", "()V"); } /** * 展示插屏广告 */ export function showInterstutalAD() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showInterstutalAD", "()V"); } /** * 展示全屏广告 */ export function showFullScreenAD() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showFullScreenAD", "()V"); } /** * 展示横幅广告 */ export function showBannerAD() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showBannerAD", "()V"); } /** * 移除横幅广告 */ export function removeBannerAD() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "removeBannerAD", "()V"); } /** * 展示原生广告 */ export function showNativeAD() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "showNativeAD", "()V"); } /** * 移除原生广告 */ export function removeNativeAD() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "removeNativeAD", "()V"); } /** * 移除开屏图 */ export function removeSplash() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "removeSplash", "()V"); } /** * 微信登录 */ export function wxLogin() { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "wxLogin", "()V"); } /** * 微信分享 */ export function wxShare(url: string, title: string, descroption: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "wxShare", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", url, title, descroption); } /** * 打开手机浏览器 * @param url 跳转地址 */ export function openUrl(url: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "openUrl", "(Ljava/lang/String;)V", url); } /** * 打开微信小程序 * @param url 跳转地址 */ export function openWXApplets(userName: string, url: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "openWXApplets", "(Ljava/lang/String;Ljava/lang/String;)V", userName, url); } /** * UM上报 */ export function umUp(eventId: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "umBuriedPoint", "(Ljava/lang/String;)V", eventId); } /** * 试玩游戏 */ export function intoGameList(userId: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "intoGameList", "(Ljava/lang/String;)V", userId); } /** * 复制字符串 */ export function copyText(text: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "copyText", "(Ljava/lang/String;)V", text); } /** *互推下载 */ export function downloadFile(url: string, saveName: string = "app.apk", progressName: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "downloadFile", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", url, saveName, progressName); } /** * 检测本地没有安装包 * @param apkName * @returns */ export function isExistAPK(apkName: string): boolean { if (ISJSB()) { return jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "isExistAPK", "(Ljava/lang/String;)Z", apkName); } return false; } /** * 检测本地有没有安装 * @param packageName * @returns */ export function isInstalled(packageName: string): boolean { if (ISJSB()) { return jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "isInstalled", "(Ljava/lang/String;)Z", packageName); } return false; } /** * 安装应用 */ export function installApp(apkName: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "installApp", "(Ljava/lang/String;)V", apkName); } /** * 启动应用 */ export function startApp(packageName: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "startApp", "(Ljava/lang/String;)V", packageName); } /** * 上报用户ID */ export function setThinkingID(userId: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "setThinkingID", "(Ljava/lang/String;)V", userId); } /** * 上报数数 */ export function reportThinking(eventName: string, data: string = "") { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "reportThinking", "(Ljava/lang/String;Ljava/lang/String;)V", eventName, data); } /** * 第一次接口上报数数 */ export function reportThinkingOnce(eventName: string, data: string = "") { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "reportThinkingOnce", "(Ljava/lang/String;Ljava/lang/String;)V", eventName, data); } /** * 上报用户数据到数数 */ export function reportThinkingUserInfo(userData: string) { ISJSB() && jsb.reflection.callStaticMethod("com/cocos/game/MainActivity", "reportThinkingUserInfo", "(Ljava/lang/String;)V", userData); } } //SafeArea适配 let getSafeAreaRect_old = sys.getSafeAreaRect; sys.getSafeAreaRect = function () { let rect: Rect = getSafeAreaRect_old(); if (ISJSB()) { let offHeight = globalThis.notchRatio * view.getVisibleSize().height; rect.height -= (offHeight || 0); } console.log("============刘海屏适配" + rect); return rect; }