import * as cc from 'cc'; import { _decorator, Component } from 'cc'; import { UmDeviceInfo } from './UmDeviceInfo'; import { UmClientEvent } from './UmOneToMultiListener'; const { ccclass, property } = _decorator; @ccclass('UmNativeBridge') export class UmNativeBridge extends Component { static _instance: UmNativeBridge; static get instance() { if (UmNativeBridge._instance) { return UmNativeBridge._instance; } UmNativeBridge._instance = new UmNativeBridge(); return UmNativeBridge._instance; } public vibrate() { //check web desktop if (UmDeviceInfo.isDesktopBrowser) return; //check mobile browser (ios can not vibrate in browser) if (UmDeviceInfo.isMobileBrowser && !UmDeviceInfo.isIos) { navigator?.vibrate([500]); return; } //check native if (!UmDeviceInfo.isNative) return; //android native if (UmDeviceInfo.isAndroid) { cc.native.reflection.callStaticMethod("com/cocos/game/AppActivity", "vibrate", "(I)V", 600); return; } //ios native if (UmDeviceInfo.isIos) { cc.native.reflection.callStaticMethod("NativeBridge", "VibrateWithIntensity:", "0.5"); return; } } public getTokenFromDeepLink(): string { if (UmDeviceInfo.isAndroidNative) { return cc.native.reflection.callStaticMethod("com/cocos/game/AppActivity", "getTokenFromDeepLink", "()Ljava/lang/String;"); } if (UmDeviceInfo.isIosNative) { return cc.native.reflection.callStaticMethod("NativeBridge", "GetTokenFromDeepLink:", "0"); } return ""; } public onCallNative(evt: string, content: string = "") { if (UmDeviceInfo.isAndroidNative) { return cc.native.reflection.callStaticMethod("com/cocos/game/AppActivity", "onCallFromJavascript", "(Ljava/lang/String;Ljava/lang/String;)V", evt, content); } // if (UmDeviceInfo.isIosNative) { // return cc.native.reflection.callStaticMethod("NativeBridge", "GetTokenFromDeepLink:", "0"); // } } public onNativeCallJS(evt: string, params: string) { UmClientEvent.dispatchEvent(evt, params); } } window.NativeCallJS = (evt: string, params: string) => { console.log('NativeCallJS------------------------> EVT ' + typeof evt + ' = ' + evt + " ==>> " + params); UmNativeBridge.instance.onNativeCallJS(evt, params); }