supersdk

文档中心

文档中心

下载文档

接入前准备(Web JS)


网页端配置

引入

按照正常引入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请与游戏客户端约定
    }
}

Android端配置

导入libs库文件

将基础模块下载下来的所有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

Screenshot

复制代码:
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’按键。把本次修改同步到游戏项目中

修改AndroidManifest(必须)

添加 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();
}

Ios端配置

导入SuperSDK库文件

将下载SDK里面的所有静态库和SuperSDK.bundle拷贝到项目开发目录下,然后拖拽到工程目录下 ,弹出如 下图对话框所示(注意勾选),点击Finish。

BaseCore.a               基础库,内含统计和配置模块代码,必须导入,以下库均依赖此库
SuperSDK.framework       SuperSDK对外库,内含平台模块(platform),及对外接口
SuperSdkImp.a            SuperSDK母包,模拟渠道运行环境,供测试使用,打渠道包时可以删除
SuperSDK.bundle          SuperSDK资源配置文件

Screenshot

添加SuperSdk版本号

在项目的info.plist文件里,增加一项用于标识SuperSDK版本号的值, key为sp_version,对应的value值为当前接入SuperSdk.framework的版本。

Screenshot

SuperSDK.framework的版本号请查看下载的资源包中的README.txt。 Screenshot

添加系统依赖库

在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。

Screenshot

引用SuperSDK

#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’”}’