Files
fc/dev/project/assets/Scripts/ffengine/plugin_help.js
T
2026-05-23 22:10:14 +08:00

242 lines
6.5 KiB
JavaScript

const CMiscHelp = require("misc_help");
const CTimeHelp = require("timer_help");
let CPluginHelp = cc.Class({
statics: {
instance: null
},
ctor: function () {
this.m_callFun = undefined;
this.m_AndroidSDK = window["androidSDK"];
this.m_iosSDK = undefined;
this.m_enableSDK = false;
this.m_listCaller = {};
},
isEnableSDK : function() {
this.initCallerPtr();
return this.m_enableSDK;
},
// callback type::( param : any ) => void
regSdkCallBack: function( funcName, callback, owner ) {
let cbList = this.m_listCaller[ funcName ];
if ( undefined === cbList ) {
cbList = [];
this.m_listCaller[ funcName ] = cbList;
}
for( let item of cbList ) {
if( item.CB === callback ) {
return;
}
}
cbList.push( { CB : callback, OWNER : owner } );
},
removeSdkCallBack: function( funcName, callback ) {
let cbList = this.m_listCaller[ funcName ];
if ( undefined === cbList ) {
return;
}
for ( let lCnt = 0; lCnt < cbList.length; ++lCnt ) {
if ( callback === cbList[lCnt].CB ) {
cbList.splice( lCnt, 1 );
return;
}
}
},
sendSdkCallBack: function( funcName, param ) {
let cbList = this.m_listCaller[ funcName ];
if ( cbList ) {
for( let itemCb of cbList ) {
if ( itemCb && itemCb.CB ) {
itemCb.CB.call( itemCb.OWNER, param );
}
}
}
},
callSdk: function( funcName, params ) {
this.initCallerPtr();
return this.m_callFun( funcName, params );
},
initCallerPtr: function() {
if ( this.m_callFun ) {
return;
}
if ( CMiscHelp.getInstance().isNativeAndroid() ) {
this.m_enableSDK = true;
this.m_callFun = this._callNativeAndroid;
}
else if ( CMiscHelp.getInstance().isNativeIOS() ) {
this.m_enableSDK = true;
this.m_callFun = this._callNativeIOS;
}
else if ( CMiscHelp.getInstance().isMobileBrowser() ) {
if ( CPluginHelp.s_AndroidSDK ) {
this.m_enableSDK = true;
this.m_callFun = this._callEmbedWebAndroid;
}
else {
let webIosKit = window[ "webkit" ];
if ( webIosKit && webIosKit.messageHandlers ) {
this.m_iosSDK = webIosKit.messageHandlers.iosSDK;
}
if ( this.m_iosSDK ) {
this.m_enableSDK = true;
this.m_callFun = this._callEmbedWebIOS;
}
}
}
if ( ! this.m_callFun ) {
this.m_callFun = this._callDefault;
}
},
_callNativeAndroid: function( funcName, params ) {
return jsb.reflection.callStaticMethod( "com.ffengine.FFSDK", "onJsCallSdk", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", funcName, params );
},
_callNativeIOS: function( funcName, params ) {
return jsb.reflection.callStaticMethod("FFSDK","onJsCallSdk:params:", funcName, params );
},
_callEmbedWebAndroid: function( funcName, params ) {
return this.m_AndroidSDK.onJsCallSdk( funcName, params );
},
_callEmbedWebIOS: function( funcName, params ) {
return this.m_iosSDK.postMessage( { "funcName": funcName, "params":params } );
},
_callDefault: function( funcName, params ) {
// if ( "platformInfo" === funcName ) {
//
// let rtVal = {
// "deviceId": "6464-64-64-AD3-FF",
// "appName": "com.fc.ccc" ,
// "appVersion": "1.0.1",
// "lang": "tw",
// "idfa": "05734754305" ,
// "netType": "4g",
// "simulator": "0" ,
// "ip": "192.168.1.1" ,
// "gameName": "FC",
// "openGM": "1",
// "ssl": "0" ,
// "php": "twsa.qa.fitfun.net:8310",
// "channelId": "",
// "channelName": "Develop",
// "storeOpenID": "0",
// "enableGuest": "0",
// "hideSwitch": "1",
// "gmUrl": "",
// "socialUrl": "",
// "currency_name": "圓",
// "currency_multiple": "1",
// "currency_division": "1",
// "currency_round": "1"
// };
//
// return JSON.stringify( rtVal );
// }
// else if ( "checkUpdate" === funcName ) {
//
// let rtVal = {
// "success": "0",
// "version": "1.0.2",
// "changeContent":"0"
// };
//
// CTimeHelp.getInstance().pushNextFrame( () => {
//
// CPluginHelp.getInstance().sendSdkCallBack( "checkUpdateDone",rtVal );
//
// } );
// }
// else if ( "autoLogin" === funcName ) {
//
// let rtVal = {
// "openId": "yzwlk123"
// };
//
// CTimeHelp.getInstance().pushNextFrame( () => {
//
// CPluginHelp.getInstance().sendSdkCallBack( "login", rtVal );
//
// } );
// }
// else if ( "switchAccount" === funcName ) {
//
// let rtVal = {
// "openId": "yzwlk126"
// };
//
// CTimeHelp.getInstance().pushNextFrame( () => {
//
// CPluginHelp.getInstance().sendSdkCallBack( "login", rtVal );
//
// } );
// }
return "";
},
});
CPluginHelp.getInstance = function () {
if (!CPluginHelp.instance) {
CPluginHelp.instance = new CPluginHelp();
}
return CPluginHelp.instance;
}
module.exports = CPluginHelp;
window[ "onPluginCallBack" ] = function ( params ) {
let base64Code = window.atob( params );
let realParams = decodeURIComponent( base64Code );
let jsonResult = JSON.parse( realParams, null );
let rtFunName = jsonResult[ "funcName" ];
let rtParams = jsonResult[ "params" ];
CTimeHelp.getInstance().pushNextFrame( () => {
CPluginHelp.getInstance().sendSdkCallBack( rtFunName, rtParams );
} );
};