按照正常引入js的方法,在页面中引入JSSDK.js。 如:
//引入JSSDK.js
<script type="text/javascript" src="js/JSSDK.js"></script>
yz为全局变量,现提供的接口有:invoke、invokeInt、invokeFloat、invokeString、invokeBool(功能与接口的对应关系请查看下方附录)
例如调用invoke接口,yz.invoke(modulename, funcname, parameters);
modulename:模块名,
funcname:方法名,
parameter:传递的参数
示例:
<script>
// 登录功能
// 登录页面调用的是invoke接口,模块名为platform,调用的方法为login,参数为空字符串
yz.invoke('platform', 'login', '');
// 获取gameid
// 获取gameid功能调用的是invokeInt接口,模块名为config,调用的方法为getValue,参数为'{ "key": "yz_game_id"}'
yz.invokeInt('config', 'getValue', {
"key": "yz_game_id"
});
// 获取opid
// 获取opid功能调用的是invokeFloat接口,模块名为youzu,调用的方法为getValue,参数为'{"key": "opid"}'
yz.invokeFloat('youzu', 'getValue', {
"key": "opid"
});
// 获取设备id
// 获取设备id功能调用的是invokeInt接口,模块名为tools,调用的方法为getDeviceId,参数为空字符串
yz.invokeString('tools', 'getDeviceId', '');
// 是否注销
// 是否注销功能调用的是invokeInt接口,模块名为platform,调用的方法为hasLogout,参数为空字符串
yz.invokeBool('platform', 'hasLogout', '');
</script>
JSSDK中还需要利用下面的方式来接收客户端的回调:
yz.SDKDataCallback = function(moduleName, funcname, parameters) {}
yz.SDKDataCallback里面会接收此页面调用的所有yz.invoke(或其他接口)的回调
接口描述:游戏客户端调用初始化后,需要js端等待初始化回调才能跳转到登录页面
注意一:游戏js端,未收到回调时不能跳转到登录,收到平台模块(platform)模块的成功回调即可认为成功,游戏可跳转到登录页面;
接口调用:无
接口回调:
yz.SDKDataCallback = function(moduleName, funcname, parameters) {
// 因为yz.SDKDataCallback里面会接收此页面调用的所有yz.invoke(或其他接口)的回调,所以需要根据返回的moduleName、funcname和parameters来判断是哪个接口的回调函数
// 登录接口的moduleName为platform ,funcname为login, 而当parameters的code为1时 登录成功,为其他数值时登录失败
if (moduleName === "platform" && funcname === "init" && JSON.parse(parameters).code === 1) {
//初始化成功,游戏跳转到登录页面
} else if(moduleName === "platform" && funcname === "init" && JSON.parse(parameters).code != 1) {
//初始化失败,游戏必须重启或提示玩家重启
}
if (moduleName === "platform" && funcname === "pay" && JSON.parse(parameters).code == 1) {
alert("支付成功")
}
}
接口描述:提供给游戏客户端和游戏js端进行交互
注意一:moduleName=game表示游戏发送自定义事件,其他moduleName无效;
注意二:funcName为事件名称,游戏可通过这个参数区分不同事件,必须为字符串;
注意三:parameters为事件参数,也可传“”空,但必须为字符串,传的内容视游戏事件而定;
接口调用:
yz.invoke('game', 'funcName-xxx', 'parameters-xxx');
接口回调:
yz.SDKDataCallback = function(moduleName, funcname, parameters) {
if (moduleName === "game") {
//这里表示游戏自定义事件,游戏再通过funcname区分不同事件即可, parameters请与游戏客户端约定
}
}
将基础模块下载下来的所有aar包复制到游戏项目的libs目录下,如果没有请新建。然后在build.gradle内写入下列代码:
bcore-release.aar 基础库,必须导入,以下库均依赖此库,内含统计sdk,和工具基础库utils.jar
supersdk-release.aar supersdk对外库,内含平台模块(platform),及对外接口
supersdk-mubao-release.aar supersdk母包,模拟渠道运行环境,供测试使用,打渠道包时可以删除
supersdk-jsdk.aar supersdk网页版SDK
复制代码:
repositories {
flatDir{dirs'libs'}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile(name:'bcore-release', ext:'aar')
compile(name:'supersdk-mubao-release', ext:'aar')
compile(name:'supersdk-release', ext:'aar')
compile(name:'supersdk-jsdk-release', ext:'aar')
}
写入完毕,然后请点击编辑界面右上角的同步,即‘Sync Now’按键。把本次修改同步到游戏项目中
添加 android:name=“com.supersdk.openapi.SuperSdkApplication” 至application节点。
<application
android:allowBackup="true"
android:label="SuperSDKDemo"
// 添加下面这个值即可
android:name="com.supersdk.openapi.SuperSdkApplication" >
......
</application >
接口描述:初始化supersdk及各个模块,并定义一个监听,接收js端传过来的自定义事件
注意一:游戏必须在客户端的activity中onCreate方法同步调用;
接口调用:
//参数一:app上下文,传activity即可;
//参数二:游戏url
//参数三:Map参数,无特殊需求,传null即可;
//参数四:客户端监听,接收从js端发过来的游戏自定义事件。
SuperSDK.init(MainActivity.this, url, map, mOnGameFuncListener);
接口描述:提供给游戏客户端和游戏js 端交互的接口
接口调用:给js端发送事件
SuperJSDK.jsBack(funcName, result);//funcName:事件名称,区分不同事件;result:事件参数,请与js端约定好,可传“”.
接口回调:接收js端自定义事件的响应
private OnGameFuncListener mGameListener = new OnGameFuncListener() {
@Override
public void onEvent(String funcName, String params) {
//接收从js端发过来的游戏自定义事件。
//funcName表示事件类型,必填
//params表示该事件的参数,也可为空,这个游戏方自定义
Log.d(TAG, "funcName:" + funcName + "\nparams:" + params);
}
};
日志打印:以退出游戏举例
funcName:exit
params:{"code":1}
接口描述:生命周期接口务必在游戏主activity的对应方法中同步调用
@Override
protected void onStart() {
super.onStart();
SuperSDK.lifecycle.onStart();
}
protected void onResume() {
super.onResume();
SuperSDK.lifecycle.onResume();
};
@Override
protected void onPause() {
super.onPause();
SuperSDK.lifecycle.onPause();
}
@Override
protected void onStop() {
super.onStop();
SuperSDK.lifecycle.onStop();
}
@Override
protected void onRestart() {
super.onRestart();
SuperSDK.lifecycle.onRestart();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
SuperSDK.lifecycle.onNewIntent(intent);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
SuperSDK.lifecycle.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
SuperSDK.lifecycle.onSaveInstanceState(outState);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
SuperSDK.lifecycle.onConfigurationChanged(newConfig);
}
@Override
protected void onDestroy() {
super.onDestroy();
SuperSDK.lifecycle.onDestroy();
}
将下载SDK里面的所有静态库和SuperSDK.bundle拷贝到项目开发目录下,然后拖拽到工程目录下 ,弹出如 下图对话框所示(注意勾选),点击Finish。
BaseCore.a 基础库,内含统计和配置模块代码,必须导入,以下库均依赖此库
SuperSDK.framework SuperSDK对外库,内含平台模块(platform),及对外接口
SuperSdkImp.a SuperSDK母包,模拟渠道运行环境,供测试使用,打渠道包时可以删除
SuperSDK.bundle SuperSDK资源配置文件
在项目的info.plist文件里,增加一项用于标识SuperSDK版本号的值, key为sp_version,对应的value值为当前接入SuperSdk.framework的版本。
SuperSDK.framework的版本号请查看下载的资源包中的README.txt。
在Xcode -> Target -> Build Phrases ->Link Binary WithLibraries中添加以下依赖库:
Foundation.framework
UIKit.framework
AdSupport.framework
SystemConfiguration.framework
CoreTelephony.framework
libstdc++.6.tbd
libsqlite3.tbd
(注:将AdSupport.framework的status改为optional)
在工程配置里面,找到Linking部分,修改Other Linker Flags,添加-ObjC。
#import <SuperSDK/SuperSDK.h>
接口描述:调用此接口会初始化SuperSDK各模块。
接口定义:游戏必须在AppDelegate的生命周期方法- application: didFinishLaunchingWithOptions:中同步调用,调用时游戏必须暂停,收到平台模块(platform)模块的成功回调即可认为成功,游戏可恢复运行 。
+ (void)init:(SuperSDKCallback)callbackBlock;
接口调用:
[SuperSDK init:^(NSString *moduleName, NSString *funcName, NSString *result) {
// 设置回调block,将回调交给中间类处理,这里是让viewController对象直接处理
[viewController handlerCallback:moduleName funcName:funcName result:result];
}];
接口回调:
- (void)handlerCallback:(NSString *)moduleName funcName:(NSString *)funcName result:(NSString *)result {
// 处理SuperSDK回调逻辑,注意,所有模块回调都在这里。
NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n result : %@", moduleName, funcName, result);
// 1.回调参数解析
NSDictionary *retParam = nil;
if (result) {
NSData *jsonData = [result dataUsingEncoding:NSUTF8StringEncoding];
if (jsonData) {
retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
}
}
int code = [[retParam objectForKey:@"code"] intValue]; // 状态码
NSString *msg = [retParam objectForKey:@"msg"]; // 说明
// 2.回调参数判断
if ([moduleName isEqualToString:BCORE_MODULE_PLATFORM]) {// 平台模块回调
if ([funcName isEqualToString:BCORE_FUNC_INIT]) {// 初始化回调
NSLog(@"********初始化结束回调********");
if (code == BCORE_SUCCESS) {
NSLog(@"********初始化成功********");
}
else {
NSLog(@"********初始化失败,游戏无法在进行下去********");
}
}
}
}
回调日志打印:
2017-06-27 17:42:02.115 Demo_Mubao[6255:992012] ****** 收到回调
moduleName : platform,
funcName : init,
result : {
"msg" : "初始化成功",
"code" : 1
}
yz.对应接口(modulename, funcname, parameters);
不同的接口对应的参数如下表所示:
功能 | 对应接口 | moduleName | funcname | parameters | 是否有回调 |
---|---|---|---|---|---|
登录页面初始化 | yz.invoke | “platform” | “openLoginPage” | ”” | 无 |
登录 | yz.invoke | “platform” | “login” | ”” | 有 |
注销 | yz.invoke | “platform” | “logout” | ”” | 有 |
进入游戏 | yz.invoke | “platform” | “enterGame” | 参数较多 | 无 |
创建角色 | yz.invoke | “platform” | “createRole” | 参数较多 | 无 |
打开游戏内页 | yz.invoke | “platform” | “openHomePage” | ”” | 无 |
角色升级 | yz.invoke | “platform” | “levelUp” | 参数较多 | 无 |
支付 | yz.invoke | “platform” | “pay” | 参数较多 | 有 |
用户中心 | yz.invoke | “platform” | “openUserCenter” | ”” | 无 |
论坛 | yz.invoke | “platform” | “openForum” | ”” | 无 |
打开客服 | yz.invoke | “platform” | “openCustomerService” | ”” | 无 |
获取gameId | yz.invokeInt | “config” | “getValue” | ’{“key”:“yz_game_id”}’ | 无 |
获取opid | yz.invokeFloat | “youzu” | “getValue” | ’{“key”:“opid”}’ | 无 |
获取设备ID | yz.invokeString | “tools” | “getDeviceId” | ”” | 无 |
判断是否注销 | yz.invokeBool | “platform” | “hasLogout” | ”” | 无 |
测试 | yz.invoke | “youzu” | “getValue” | ’{“key”:“‘opid’”}’ | 无 |