supersdk

文档中心

文档中心

下载文档

工具模块


工具模块提供了一些辅助功能。

注意:部分接口需要添加权限,如下所示:

<!-- 调节屏幕亮度功能需添加此权限 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<!-- 保存 key-value 数据及获取 key-value 数据功能需添加此权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

一、获取设备信息

接口描述:获取设备相关信息。

接口调用:

String deviceInfo = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, "getDeviceInfo", null);
Log.d(TAG, "deviceInfo="+deviceInfo);

日志打印:

{
    "fingerprint_id":"202308080201670100293fc80a8cad69d4a640cdacc59a6bdde",
    "client_id":"d8962b73cbf1b2c0fd8841a8886a7dad",
    "trace_id":"4e11c764c820258ce778020b17a4e8f3",
    "youzu_id":"d8962b73cbf1b2c0fd8841a8886a7dad",
    "android_device_id":"f0459465a15088ce",
    "google_id":"8d4d7200-bd1c-45be-8508-3e5a29d47081",
    "android_imei":"ffffffff-f47f-2351-ffff-ffffef05ac4a",
    "shumei_id":"20231023180912695c7af3c0f40c68b7a27d18a23cb77c018d887d05f29d30",
    "device_name":"Xiaomi",
    "package_name":"com.syj.hgame",
    "idfa":"",
    "idfv":"",
}
KEY KEY含义 备注
fingerprint_id 设备指纹 ID 正常 51 个字符,其它值为异常情况
shumei_id 数美 ID 正常 62 个字符,其它值为异常情况
android_device_id 安卓 ID 正常 16 个字符,其它值为异常情况
google_id 谷歌 ID 仅支持 Android
package_name 包名 应用 bundle id
android_imei IMEI 仅支持海外,国内默认 0
device_name 设备名称 设备自定义名称
youzu_id 游族 ID 正常 32 个字符,其它值为异常情况
client_id 设备指纹 ID 映射 正常 32 个字符,其它值为异常情况
trace_id 当前启动标识 ID 正常 32 个字符,其它值为异常情况
idfv iOS - 供应商标识符 仅支持 iOS, Android 空字符串
idfa iOS - 广告标识符 仅支持 iOS, Android 空字符串

二、获取设备采集数据

接口描述:采集手机设备信息。

接口调用:

String collectionData = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_COLLECTION_DATA, null);
Log.d(TAG, "collectionData="+collectionData);

日志打印:

{
    "bundle_id": "com.youzu.supersdk.demo",
    "device_name": "Xiaomi",
    "device_type": "Redmi Note 3",
    "idfa": "",
    "idfv": "",
    "language": "zh",
    "network": "WIFI",
    "operator": "other",
    "os_version": "5.0.2"
}

三、获取客户端 IP 信息

接口描述:调用该接口,获取客户端 ip 地址的真正信息,如地域等。

注意:只支持海外网游渠道。

接口调用:

SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, "getClientIP", null);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
		
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
	    if (BCoreConst.tools.MODULE_NAME.equals(moduleName) && "getClientIP".equals(funcName)) {
            // 获取客户端 IP 信息的回调
            getClientIPInfo(result);
        } else {
            Log.d("supersdk", "其他模块方法的监听结果");
        }
    }
};
private void getClientIPInfo(String result) {
    JSONObject json = JsonUtils.parseObject(result);
    int code = json.getIntValue("code");
    String msg = json.getString("msg");
    String data= json.getString("data");
    if(BCoreCode.SUCCESS == code) {
        // 访问服务器成功,data 为服务器返回的完整数据
        Log.d("result", "访问成功,data="+data);
    } else {
        // 访问服务器失败,msg 为失败原因
        Log.d("result", "访问失败,msg="+msg);
    }
}

日志打印:

moduleName : tools,
funcName : getClientIP,
result : {
    "msg":"成功",
    "data":{
        "ip":"45.40.60.217",
        "country":"JP", // 地区或国家
        "continent":"AS" // 大洲
    },
    "code":1
}

参考文档: 第一列国家码,最后一列大洲码 https://www.geonames.org/countries/

四、获取当前设备使用的语言

接口描述:获取系统使用的语言。

接口调用:

String language = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, "getLanguage", null);
Log.d(TAG, "language="+language);

日志打印:

language=zh-Hans-CN

五、获取当前设备设置的国家地区

接口描述:获取当前设备设置的国家地区。

接口调用:

String country = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, "getCountry", null);
Log.d(TAG, "country="+country);

日志打印:

country=CN

六、复制到剪切板

接口描述:复制文字到剪切板。

接口调用:

Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY_VALUE, "测试复制文字");
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_COPY_TOCLIPBOARD, map);

七、弹窗提示

接口描述:弹窗提示,分为 toast 框(弹出后马上消失的框),和 dialog 框(有按钮,需点击才能消失的框)。

1、toast 弹窗

toast

接口调用:

// 不传入按钮,判断为 toast 框
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY_TOOLS_CONTENT, "弹出 toast 框");// 提示用,过一秒钟即会消失
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_ALERT, map);

2、dialog 弹窗

接口描述:可以显示若干按钮,按钮个数可变,按钮文字使用”|“分割。如需要两个按钮:确认、取消,则写成”确认|取消”。三个按钮:”确认|中立|取消”

dialog

接口调用:

// 传入按钮,判断为 dialog
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY_TOOLS_TITLE, "标题");
map.put(BCoreConst.tools.KEY_TOOLS_CONTENT, "弹窗内容: 这是测试内容");
map.put(BCoreConst.tools.KEY_TOOLS_BUTTON, "确认|取消");// 两个按钮
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_ALERT, map);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
		
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
	if (BCoreConst.tools.MODULE_NAME.equals(moduleName) && BCoreConst.tools.FUNC_ALERT.equals(funcName)) {
            // 弹窗回调
            JSONObject json = JsonUtils.parseObject(result);
	    int code = json.getIntValue("code");
	    if(BCoreCode.SUCCESS != code) {
	        String msg = json.getString("msg");
	        Log.d(TAG, "alert failed: "+code+", "+msg);
	        return;
	    }
	    String data = json.getString("data");
	    if ("确认".equals(data)) {
		// 用户点击了确认按钮
	    } else if ("取消".equals(data)) {
	        // 用回点击了取消按钮
	    } else {
	        Log.d(TAG, "result: " + data);
	    }
        } else {
            Log.d("supersdk", "其他模块方法的监听结果");
        }
    }
};

日志打印:

moduleName:tools
funcName:alert
result:{"code":1,"data":"确认","msg":"success"}

八、设置屏幕亮度方法

接口描述:调节屏幕的亮度,只能传 0.0-1.0 之间的数字。需要添加权限,请看最上面权限添加。

接口调用:

// 调节屏幕亮度
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY_VALUE, (light+=0.1)+""); // 传值范围:0.0-1.0
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_SET_SCREEN_LIGHT, map);

九、写缓存

接口描述:保存数据到 SD 卡。需要添加权限,请查看最上面权限添加。

接口调用:

// 保存的数据为 key="data",value=" 测试保存数据 "
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY, "data");
map.put(BCoreConst.tools.KEY_VALUE, "测试保存数据");
SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_SAVE_DATA, map);

十、读取缓存

接口描述:获取上一条保存下来的数据。

接口调用:

// 获取 key="data" 的 value 值
Map<String, String> map = new HashMap<String, String>();
map.put(BCoreConst.tools.KEY, "data");
String data = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_DATA, map);
Log.d(TAG, "data="+data);

日志打印:

data = 测试保存数据

十一、谷歌评分

1、跳转至商店

接口调用:

SuperSDK.invoke(BCoreConst.tools.MODULE_NAME,"getAPPStoreReview", null);

2、应用内弹起

接口调用:

SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, "getStoreReview", null);

  • 注意事项:

    • 1、同一个谷歌账号弹框次数有限制(谷歌后台配额:https://developer.android.google.cn/guide/playcore/in-app-review/test)
    • 2、使用的谷歌账号评论过,再次调用该接口谷歌也会返回成功
    • 3、谷歌限制账号评论时,调用该接口也会返回成功
    • 4、弹出来评论框时显示的游戏名称,是手机上 app 名称,而非谷歌商店的游戏名称
    • 5、安卓系统需要 >= 5.0

  • 调用谷歌评分(应用内弹起)接口回调信息:
// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if(BCoreConst.tools.MODULE_NAME.equals(moduleName)
					&& "getStoreReview".equals(funcName)) {
	// TODO 处理回调 json 信息
}

日志打印:

moduleName:tools
funcName:getStoreReview
result:{"code":1,"msg":"app内应用谷歌评价弹窗关闭"}

十二、跳转到系统设置

接口调用:

SuperSDK.invoke(BCoreConst.tools.MODULE_NAME,"openSystemSetting", null);

十三、海外设备广告信息查询接口

接口描述:用于广告溯源,根据设备查询引流该玩家的广告。

接口调用:

SuperSDK.invoke(BCoreConst.tools.MODULE_NAME, "getDeviceCheckInfo", null);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
		
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
	    if (BCoreConst.tools.MODULE_NAME.equals(moduleName) && "getDeviceCheckInfo".equals(funcName)) {
            // 海外设备广告信息查询
            getDeviceCheckInfo(result);
        } else {
            Log.d("supersdk", "其他模块方法的监听结果");
        }
    }
};
private void getDeviceCheckInfo(String result) {
    JSONObject json = JsonUtils.parseObject(result);
    int code = json.getIntValue("code");
    String msg = json.getString("msg");
    String data= json.getString("data");
    if(BCoreCode.SUCCESS == code) {
        // 海外设备广告信息查询成功,data 为服务器返回的完整数据
        Log.d("result", "海外设备广告信息查询成功,data="+data);
    } else {
        // 海外设备广告信息查询失败,msg 为失败原因
        Log.d("result", "海外设备广告信息查询失败,msg="+msg);
    }
}

日志打印:

moduleName:tools
funcName:getDeviceCheckInfo
result:{
    "code":1,
    "data":"{
        "ad_game_type":"",
        "ad_name":"",
        "is_ad_device":false
    }",
    "msg":"success"
}

十四、获取 CpsId

接口描述:获取 CpsId 信息。

接口调用:

// 获取 CpsId
String cpsId =SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, "getCpsId", null);
Log.d(TAG, "cpsId="+cpsId);

日志打印:

cpsId=1_9_1662101236_394306

十五、获取 AndroidManifest 配置

1、获取包名

接口描述:获取 AndroidManifest 下游戏包名。

packagename

接口调用:

// 获取应用包名
String packageName = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_PACKAGE_NAME, null);
Log.d(TAG, "packageName="+packageName);

日志打印:

packageName=com.youzu.supersdk.demo

2、获取应用名称

接口描述:获取 AndroidManifest 下的应用名称。

appName

接口调用:

// 获取应用名称
String appName = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_APP_NAME, null);
Log.d(TAG, "appName="+appName);

日志打印:

appName=SuperSDKDemo

3、获取版本号

接口描述:获取 AndroidManifest 下 versionCode。

versonCode

接口调用:

// 获取 AndroidManifest 下 versionCode
int versionCode = SuperSDK.invokeInt(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_VERSION_CODE, null);
Log.d(TAG, "versionCode="+versionCode);

日志打印:

versionCode=40

4、获取版本名称

接口描述:获取 AndroidManifest 下 versionName。

versionName

接口调用:

// 获取 AndroidManifest 下 versionName
String versionName = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_VERSION_NAME, null);
Log.d(TAG, "versionName="+versionName);

日志打印:

versionName=378

5、获取 meta-data 值

接口描述:获取 AndroidManifest 下 meta-data 的 value 值。

sp_version

接口调用:

// 获取 key = sp_version 的值
Map<String, String> params= new HashMap<String, String>();
params.put(BCoreConst.tools.KEY, "sp_version");// 获取 key="sp_version" 的 value 值
String spVersion = SuperSDK.invokeString(BCoreConst.tools.MODULE_NAME, BCoreConst.tools.FUNC_GET_META_DATA, params);
Log.d(TAG, "spVersion="+spVersion);

日志打印:

spVersion=3.1.1

附录

常量字符串 实际字符串 描述
BCoreConst.tools.MODULE_NAME tools 模块名称
BCoreConst.tools.FUNC_GET_COLLECTION_DATA getCollectionData 获取设备信息,json
BCoreConst.tools.FUNC_GET_PACKAGE_NAME getPackageName 获取应用包名
BCoreConst.tools.FUNC_GET_APP_NAME getAppName 获取应用名称
BCoreConst.tools.FUNC_GET_LANGUAGE getLanguage 获取客户端系统语言
BCoreConst.tools.FUNC_GET_VERSION_CODE getVersionCode 获取 AndroidManifest 下 versionCode
BCoreConst.tools.FUNC_GET_VERSION_NAME getVersionName 获取 AndroidManifest 下 versionName
BCoreConst.tools.FUNC_GET_META_DATA getMetaData 获取 AndroidManifest 下 meta-data 的 value 值
BCoreConst.tools.FUNC_COPY_TOCLIPBOARD copyToClipboard 拷贝字符串到剪切板
BCoreConst.tools.FUNC_ALERT alert 弹窗:toast、dialog
BCoreConst.tools.FUNC_SET_SCREEN_LIGHT setScreenLight 调节屏幕亮度
BCoreConst.tools.FUNC_SAVE_DATA saveData 保存 key-value 数据
BCoreConst.tools.FUNC_GET_DATA getData 获取 key-value 数据