242 lines
6.5 KiB
JavaScript
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 );
|
|
|
|
} );
|
|
};
|
|
|