接入前,请确保已下载 最新版本 打包工具以及库文件。
在线集成与离线集成二选一,如果使用 Android Studio 开发工具,推荐使用在线集成。
注意事项:
1. 在工程下的 build.gradle 文件中添加如下配置:
maven {
url uri('https://open-nexus.youzu.com/repository/maven-public')
}
2. 在 app 的 build.gradle 文件中添加如下依赖:
implementation 'com.youzu.sdk.supersdk:supersdk:1.0.0'
1. 将基础模块下载下来的所有 aar 包复制到游戏项目的 libs 目录下,如果没有请新建。
bcore-release.aar 基础库,必须导入,以下库均依赖此库,内含统计 sdk,和工具基础库 utils.jar
supersdk-release.aar supersdk 对外库,内含平台模块(platform),及对外接口
supersdk-mubao-release.aar supersdk 母包,模拟渠道运行环境,供测试使用,打渠道包时可以删除
2. 然后在 build.gradle 内写入下列代码:
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')
}
3. 写入完毕,然后请点击编辑界面右上角的同步,即 “Sync Now” 按键。把本次修改同步到游戏项目中。
说明:添加 android:name=“com.supersdk.openapi.SuperSdkApplication” 至 application 节点。
<application
android:allowBackup="true"
android:label="SuperSDKDemo"
// 添加下面这个值即可
android:name="com.supersdk.openapi.SuperSdkApplication" >
......
</application >
说明:从打包工具下载母包配置,并添加(替换)到 assets 目录下,如下图所示:
接口描述:初始化 supersdk 及各个模块。
接口调用:
SuperSDK.init(MainActivity.this, mSuperSDKListener);
注意事项:游戏必须在 activity 的 onCreate 方法中同步调用,调用时游戏必须暂停,收到平台模块(platform)模块的成功回调即可认为成功,游戏可恢复运行 。
接口回调:
private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
@Override
public void onSuperSDK(String moduleName, String funcName, String result) {
// 调用接口异步监听结果
Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
// 判断这是平台模块("platform")内的方法,并且方法为初始化("init")
if(BCoreConst.platform.MODULE_NAME.equals(moduleName) && BCoreConst.platform.FUNC_INIT.equals(funcName)) {
// 初始化回调,建议调用独立的初始化处理方法
init(result);
}else {
Log.d("supersdk", "其他模块方法的监听结果");
}
}
};
// 这个方法处理初始化结果
privite void init(String result) {
JSONObject json = JsonUtils.parseObject(result);
int code = json.getIntValue("code");
if(code == BCoreCode.SUCCESS) {
// 初始化成功,游戏恢复,游戏继续运行
Log.d("supersdk", "初始化成功");
} else {
// 初始化失败,游戏必须重启,或弹框提示玩家重启
String msg = json.getString("msg");
Log.d("supersdk", "初始化失败,请重启游戏:"+code+", "+msg);
}
}
日志打印:
moduleName:platform
funcName:init
result:
{
"code":1,
"msg":"没有更新接口"
}
注意事项:生命周期接口务必在游戏主 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();
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
SuperSDK.lifecycle.onRequestPermissionsResult(requestCode,permissions,grantResults);
}
注意事项:
1. 海外游戏无需关注隐私协议,为符合国内监管部门要求,Android 端游戏请务必确定在收到上报回调后才可进行数据上报操作。
2. 该方法无需主动调用,SuperSDK 会主动下发 checkPAStatus 回调。
3. 当 code:1 时,游戏才允许上报用户数据;当 code:0 时,游戏需要执行严格模式,禁止上报用户隐私。
接口回调:
private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
@Override
public void onSuperSDK(String moduleName, String funcName, String result) {
// 调用接口异步监听结果。
Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
// 判断这是平台模块("platform")内的方法
if(BCoreConst.platform.MODULE_NAME.equals(moduleName) && "checkPAStatus".equals(funcName)) {
// 处理隐私协议
}else {
Log.d("supersdk", "其他模块方法的监听结果");
}
}
};
moduleName:platform
funcName:checkPAStatus
result:{"code":"0","msg":"不可上报"}
moduleName:platform
funcName:checkPAStatus
result:{"code":"1","msg":"可上报"}
-keep class com.youzu.**{*;}
-keep class com.supersdk.**{*;}
-keep class com.yoozoo.**{*;}
-keep class com.yzshare.**{*;}
说明:SuperSDK 提供了一个常量类,专门记录各种模块名,各个方法名常量值。如下表所示:
字符串常量 | 实际字符串 | 描述 |
---|---|---|
平台模块常量 | ||
BCoreConst.platform.MODULE_NAME | platform | 模块名称,每个模块常量名固定 |
BCoreConst.platform.FUNC_LOGIN | login | 登录 |
BCoreConst.platform.FUNC_HAS_LOGOUT | hasLogout | 渠道是否有注销接口 |
BCoreConst.platform.FUNC_LOGOUT | logout | 注销 |
BCoreConst.platform.FUNC_PAY | pay | 支付 |
BCoreConst.platform.FUNC_EXIT | exit | 退出游戏 |
BCoreConst.platform.FUNC_ENTER_GAME | enterGame | 进入游戏 |
BCoreConst.platform.FUNC_CREATE_ROLE | createRole | 创建角色 |
BCoreConst.platform.FUNC_LEVEL_UP | levelUp | 角色升级 |
BCoreConst.platform.FUNC_HAS_FORUM | hasForum | 判断是否有论坛 |
BCoreConst.platform.FUNC_OPEN_FORUM | openForum | 打开论坛 |
BCoreConst.platform.FUNC_HAS_USER_CENTER | hasUserCenter | 判断是否有用户中心 |
BCoreConst.platform.FUNC_OPEN_USER_CENTER | openUserCenter | 打开用户中心 |
BCoreConst.platform.FUNC_HAS_CUSOMER_SERVICE | hasCustomerService | 判断是否有客服 |
BCoreConst.platform.FUNC_OPEN_CUSOMER_SERVICE | openCustomerService | 打开客服 |
BCoreConst.platform.FUNC_OPEN_LOGIN_PAGE | openLoginPage | 进入登录页面 |
BCoreConst.platform.FUNC_OPEN_HOME_PAGE | openHomePage | 进入游戏首页 |
BCoreConst.platform.FUNC_HAS_GUEST | hasGuest | 用户是否为游客 |
BCoreConst.platform.FUNC_GUEST_UPGRADE | guestUpgrade | 游客升级 |
BCoreConst.platform.FUNC_OTHER_FUNCTION | otherFunction | 扩展接口 other |
BCoreConst.platform.FUNC_REPORT | report | supersdk 添加自定义埋点 |
统计模块常量 | ||
BCoreConst.stats.MODULE_NAME | stats | 模块名称 |
BCoreConst.stats.FUNC_REPORT | report | 统计上报 |
BCoreConst.stats.FUNC_GET_DEVICE_INFO | getDeviceInfo | 获取上报所需的设备信息 |
工具模块常量 | ||
BCoreConst.tools.MODULE_NAME | tools | 模块名称 |
BCoreConst.tools.FUNC_GET_DEVICE_ID | getDeviceId | 获取设备 ID |
BCoreConst.tools.FUNC_GET_COLLECTION_DATA | getCollectionData | 采集设备信息 |
BCoreConst.tools.FUNC_GET_IPINFO | getClientIPInfo | 获取客户端 IP 信息,如 IP 地区 |
BCoreConst.tools.FUNC_GET_LANGUAGE | getLanguage | 获取本地系统语言 |
BCoreConst.tools.FUNC_GET_COUNTRY | getCountry | 获取本地国家地区 |
BCoreConst.tools.FUNC_COPY_TOCLIPBOARD | copyToClipboard | 复制文字到剪切板 |
BCoreConst.tools.FUNC_ALERT | alert | 弹窗 |
BCoreConst.tools.FUNC_GET_PACKAGE_NAME | getPackageName | 获取应用包名 |
BCoreConst.tools.FUNC_GET_VERSION_NAME | getVersionName | 获取 AndroidManifest 下 versionName |
BCoreConst.tools.FUNC_GET_VERSION_CODE | getVersionCode | 获取 AndroidManifest 下 versionCode |
BCoreConst.tools.FUNC_GET_META_DATA | getMetaData | 获取 AndroidManifest 下 meta-data 的 value 值 |
BCoreConst.tools.FUNC_SET_SCREEN_LIGHT | setScreenLight | 调节屏幕亮度 |
BCoreConst.tools.FUNC_SAVE_DATA | saveData | 保存数据 |
BCoreConst.tools.FUNC_GET_DATA | getData | 获取保存的数据 |
配置模块常量 | ||
BCoreConst.config.MODULE_NAME | config | 模块名称 |
BCoreConst.config.FUNC_GET_VALUE | getValue | 获取配置信息,如 yz_game_id、extend、extend2 等 |
广告模块常量 | ||
BCoreConst.advert.MODULE_NAME | advert | 模块名称 |
BCoreConst.advert.FUNC_TRACK | track | 激活广告 |
游族模块常量 | ||
BCoreConst.advert.MODULE_NAME | youzu | 模块名称 |
BCoreConst.advert.FUNC_GET_VALUE | getValue | 获取配置,如 opid、opgameid |