supersdk

文档中心

文档中心

下载文档

接入前准备(Java)


接入前,请确保已下载 最新版本 打包工具以及库文件。

在线集成与离线集成二选一,如果使用 Android Studio 开发工具,推荐使用在线集成。

注意事项:

  • 游戏工程内的包名和类名不要包含 supersdk 相关字段,否则会存在混淆问题。

一、在线集成(推荐)

1. 在工程下的 build.gradle 文件中添加如下配置:

maven {
    url uri('https://open-nexus.youzu.com/repository/maven-public')
}

Screenshot

2. 在 app 的 build.gradle 文件中添加如下依赖:

implementation 'com.youzu.sdk.supersdk:supersdk:1.0.0'

Screenshot

二、离线集成

1. 将基础模块下载下来的所有 aar 包复制到游戏项目的 libs 目录下,如果没有请新建。

bcore-release.aar               基础库,必须导入,以下库均依赖此库,内含统计 sdk,和工具基础库 utils.jar
supersdk-release.aar            supersdk 对外库,内含平台模块(platform),及对外接口
supersdk-mubao-release.aar      supersdk 母包,模拟渠道运行环境,供测试使用,打渠道包时可以删除

2. 然后在 build.gradle 内写入下列代码:

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')
}

3. 写入完毕,然后请点击编辑界面右上角的同步,即 “Sync Now” 按键。把本次修改同步到游戏项目中。

三、修改 AndroidManifest

说明:添加 android:name=“com.supersdk.openapi.SuperSdkApplication” 至 application 节点。

<application
        android:allowBackup="true"
        android:label="SuperSDKDemo" 
        // 添加下面这个值即可
        android:name="com.supersdk.openapi.SuperSdkApplication" >
        ......
</application >

四、添加母包配置文件

说明:从打包工具下载母包配置,并添加(替换)到 assets 目录下,如下图所示:

Screenshot

五、初始化

接口描述:初始化 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