文章目录
SDK合规指南
1 文档修订记录
文档版本 | 文档更新日期 | 文档更新内容 |
---|---|---|
3.3.56 | 2024.05.10 | 1 新增SDK合规指南;2.可选个人信息的配置。 |
3.3.39 | 2022.03.30 | "2.4 添加 Activity 和权限" 新增 Activity 配置 |
3.3.8 | 2021.05.28 | 初版 |
2 接入准备
2.1 添加文件
如果游戏使用 Android Studio 管理工程,则做以下操作引入 SDK 代码。
1.打开下载好的 FYBase、FYPrivacy,拷贝文件夹中的 .aar 到工程的 libs 目录中,保持所有 .aar 在工程中只存在一份
。
2.打开工程的 build.gradle
- 拷贝以下代码到
android
字段下。
repositories {
flatDir {
dirs 'libs'
}
}
- 拷贝以下代码到
dependencies
字段下。
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
fileTree(dir: 'libs', include: ['*.aar']).each { file ->
api(name: file.name.lastIndexOf('.').with {
it != -1 ? file.name[0..<it] : file.name
}, ext: 'aar')
}
2.2 添加SDK配置
1.到星云平台的"对接中心->SDK对接->SDK列表->基础接入参数->SDK配置参数"下载如下的配置文件:
- Android SDK 配置文件:FYCoreConfig.xml
2.打开以上的配置文件,拷贝所有meta-data
配置参数到工程的 AndroidManifest.xml 中。保持所有配置参数在 AndroidManifest.xml 中只存在一份
。
3.可选个人信息的配置。如不希望本SDK采集某信息,请将对应字段的值改为0。如允许本SDK采集某信息,请将对应字段的值改为1
(1)在AndroidManifest.xml 中添加如下配置
<meta-data android:name="FY_GAME_PRIVACY" android:value="{
"android_id ": "0 ",
"basic_device_data" : "0",
"os_version" : "0",
"network_state" : "0",
}"/>
(2)字段名称说明
OS | 个人信息类型及字段 | 用途和目的 | 是否可选 | 关闭方式 |
---|---|---|---|---|
Android | 设备基础信息(设备型号、硬件信息、屏幕分辨率) | 帮用户排查异常时使用,作为异常分析的依据 | 是 | 修改配置参数 FY_GAME_PRIVACY 的 basic_device_data 字段值为"0" |
Android | Android ID | 帮用户排查异常时使用,作为异常分析的依据 | 是 | 修改配置参数 FY_GAME_PRIVACY 的 android_id 字段值为"0" |
Android | 操作系统版本 | 帮用户排查异常时使用,作为异常分析的依据 | 是 | 修改配置参数 FY_GAME_PRIVACY 的 os_version 字段值为"0" |
Android | 网络状态 | 帮用户排查异常时使用,作为异常分析的依据 | 是 | 修改配置参数 FY_GAME_PRIVACY 的 network_state 字段值为"0" |
Android | OAID(版本3.3.56已去除) | 帮用户排查异常时使用,作为异常分析的依据 | 是 | |
Android | MAC(版本3.3.56已去除) | 帮用户排查异常时使用,作为异常分析的依据 | 是 | |
Android | IMEI(版本3.3.56已去除) | 帮用户排查异常时使用,作为异常分析的依据 | 是 |
2.3 配置 Application
1、在游戏包名下新增一个 GameApplication类,该类继承自 Application,请重写GameApplication 类的 attachBaseContext
方法中调用以下代码:
FYAPP.getInstance().init(this);
打开 AndroidManifest.xml 在 application 将其继承于 GameApplication:
2.如果游戏已经继承于其他 Application,请在游戏自定义的 Application 类的 attachBaseContext
方法中调用以下代码:
FYAPP.getInstance().init(this);
3.以上2个步骤任选1个接入,否则会造成 SDK 错误闪退
。
2.4 添加 Activity
// 调试模式需要的Activity
<activity
android:name="com.stars.debuger.activity.FYDebuggerInfoActivity"
android:windowSoftInputMode="adjustResize|stateHidden"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name="com.stars.privacy.activity.FYWebActivity"
android:windowSoftInputMode="adjustResize|stateHidden"
android:screenOrientation="behind"
android:configChanges="orientation|screenSize|keyboardHidden"
/>
2.5 添加权限
打开 AndroidManifest.xml 添加如下权限配置:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.6 添加类引用
import com.stars.privacy.FYPrivacy;
import com.stars.privacy.bean.FYPRPermissionInfo;
import com.stars.privacy.bean.FYPRResponse;
import com.stars.privacy.bean.FYPRStartInfo;
import com.stars.privacy.listener.FYPRAuthCallback;
2.7 添加 Activity 生命周期方法
1、说明
- 调用点:onKeyDown生命周期
2、调用代码
FYDebugger.getInstance().onKeyDown(keyCode,event);
3、参考范例
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
FYDebugger.getInstance().onKeyDown(keyCode,event);
return super.onKeyDown(keyCode, event);
}
2.8 开启调试模式
1.将 AndroidManifest.xml 中的 FY_GAME_DEBUG 的值改为 1,即可开启「调试模式」;FY_GAME_DEBUG 改为 0,即关闭「调试模式」。
2.开启「调试模式」会显示客户端的悬浮球,点击进入调试工具可以查看接口/回调的调用信息,具体调试方法可查看文档。
3 客户端接口
3.1 启动应用(必接)
1、说明
- 调用点:每次打开游戏后马上调用
- 为了防止在授权之前去获取设备信息,其他 SDK 的初始化、登录等接口,必须放在“授权回调”之后调用
- 首次会弹出“隐私协议”弹窗。后续会根据用户实际授权情况,及后台设置重新授权的情况,决定是否再次弹出
- 系统权限列表,需根据应用实际使用权限的情况传入
2、调用代码
FYPRStartInfo startInfo = new FYPRStartInfo();
ArrayList<String> arr = new ArrayList<>();
arr.add("xxx用户协议");
arr.add("xxx隐私协议");
arr.add("xxx儿童隐私保护");
ArrayList<FYPRPermissionInfo> arr1 = new ArrayList<>();
FYPRPermissionInfo permissionInfo = new FYPRPermissionInfo();
// type 类型请严格按照下方“系统权限类型列表”提供权限组常量字段传入,如FYPRPermissionConfig.PHONE
permissionInfo.setType(FYPRPermissionConfig.PHONE);
// 权限友好说明,如“正常识别手机设备及账号安全”
permissionInfo.setDesc("xxx");
arr1.add(permissionInfo);
startInfo.setProtocolTitles(arr);
startInfo.setPermissionInfos(arr1);
FYPrivacy.getInstance().start(startInfo, new FYPRAuthCallback() {
@Override
public void authCallback(FYPRResponse fyprResponse) { // 授权回调
if (fyprResponse.getStatus() == FYPRResponse.FYPRResponseAgree) { // 用户已同意授权
// TODO: 执行其他 SDK 的初始化
// 此回调参数,标识是否使用第三方渠道的协议,"1":是,"0":否。如果为"0",则游戏需显示“查看隐私协议按钮”,否则不显示。
// 游戏在母包阶段,需对此参数做处理。打成渠道包后,会根据实际情况返回相应的值。
// 未接入星云聚合SDK的游戏,可以忽略此参数对接。
String useChannelPrivacy = String.valueOf(fyprResponse.getDataValue("use_channel_privacy"));
} else if (fyprResponse.getStatus() == FYPRResponse.FYPRResponseDisagree) { // 用户不同意授权
// TODO: 直接退出游戏
}
}
});
3、参数
参数名 | 说明 | 是否必传 |
---|---|---|
protocolTitles | 界面中各协议标题,ArrayList<String>格式 。请按顺序传3个标题。协议名称的顺序,需按照“用户协议”、“隐私协议”、“儿童隐私保护”的顺序传入。如果为数组为空或不传,则使用SDK提供的默认标题 |
否 |
permissionInfos | ArrayList<FYPRPermissionInfo> 展示系统权限列表,按数组顺序显示。如果不需要申请安卓系统权限则不用传 |
否 |
- FYPRPermissionInfo
参数名 | 说明 | 是否必传 |
---|---|---|
type | 系统权限类型,传入系统权限类型列表的权限组常量 | 是 |
desc | 游戏使用权限用途说明 | 是 |
- 系统权限类型表
权限组常量 | 权限组 | 权限 | 权限说明 |
---|---|---|---|
FYPRPermissionConfig.PHONE | phone | READ_PHONE_STATE、CALL_PHONE、READ_CALL_LOG、WRITE_CALL_LOG、ADD_VOICEMAIL、USE_SIP、PROCES_OUTGOING_CALLS |
读取手机设备信息权限,如imei等硬件信息 |
FYPRPermissionConfig.CAMERA | camera | camera | 相机拍照权限 |
FYPRPermissionConfig.CONTACTS | contacts | READ_CONTACTS、 WRITE_CONTACTS GET_ACCOUNTS |
读取手机联系人,通信记录 |
FYPRPermissionConfig.LOCATION | location | ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION |
获取定位权限 |
FYPRPermissionConfig.MICROPHONE | microphone | RECORD_AUDIO |
手机麦克风权限 |
FYPRPermissionConfig.SMS | sms | SEND_SMS RECEIVE_SMS、 READ_SMS RECEIVE_WAP_PUSH、 RECEIVE_MMS |
读取手机短信权限 |
FYPRPermissionConfig.CALENDAR | calendar | READ_CALENDAR 、WRITE_CALENDAR |
日历权限 |
FYPRPermissionConfig.SENSORS | sensors | BODY_SENSORS |
传感器权限 |
FYPRPermissionConfig.STORAGE | storage | READ_EXTERNAL_STORAGE 、WRITE_EXTERNAL_STORAGE |
存储权限 |
4.回调
- 授权回调:authCallback
3.2 查看协议(必接)
1、说明
- 调用点:在进入游戏后有个按钮用以触发查看协议,建议放在游戏内的设置菜单下。
2、调用代码
FYPrivacy.getInstance().checkAuth();
3、参数
无