仅支持Android和iOS
集成要求
合规说明
请注意,在贵司的App中集成同盾提供的SDK产品时:
1.1 根据《网络安全法》《电信条例》《电信和互联网用户个人信息保护规定》等相关法律法规要求及监管实践中的标准,在贵司的最终用户首次启动App并在贵司开始采集信息之前,贵司应以交互界面或设计(如隐私政策弹窗等)向最终用户完整告知收集、使用、与第三方共享最终用户个人信息的目的、方式和范围,并征得最终用户的明示同意。
1.2 为向贵司提供业务安全和风控服务,同盾 SDK 将采集、处理、使用用户的手机终端唯一标志信息IDFA、Android ID、OAID(包含VAID、AAID)、MAC 地址、WIFI列表、无线路由器标识(BSSID、SSID)、设备类型、设备型号、系统类型、粗略位置信息、精准位置信息、应用程序列表、运行中进程信息、网络制式、设备软件版本号、传感器(光传感器、重力传感器、磁场传感器、加速度传感器、陀螺仪传感器、心率传感器)相关设备信息。为确保贵司使用相关服务的合规性,前述隐私政策应涵盖对同盾SDK提供服务并采集、处理、使用相关信息的授权,以上内容供贵司参考,具体表述可由贵司根据贵司隐私协议的整体框架和内容自行确定。
个人信息类处理规则(隐私政策):https://www.tongdun.cn/other/privacy/id=4
使用说明:合规使用指导
环境要求
| Android | iOS | |
|---|---|---|
| 兼容版本 | Android 5.0及以上系统 | iOS9.0及以上系统 |
| 支持架构 | armeabi-v7a, arm64-v8a, x86 | armv7,arm64,x86_64 |
集成步骤
安装配置
插件安装
请在您的 react native 项目根目录中执行
npm install --save [email protected]Android权限申请
在应⽤module下的 AndroidManifest.xml ⽂件中声明以下权限
<manifest>
<!--必选权限-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!--如果您的应用是面向海外市场,在google play 上发布,请添加此项-->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<!--以下权限是可选权限,不声明此部分权限将放弃部分设备信息的采集,对数据分析及设备指纹的精准度有一定影响-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- Android11及以上获取安装包列表需要该权限,采集安装包列表涉及到⻛险合规,是否需要该权限业务⽅⾃⾏选择 -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
</manifest>权限说明
| 权限 | 说明 |
|---|---|
| INTERNET(必选) | 允许程序访问网络连接,发送请求与服务器进行通信 |
| ACCESS_NETWORK_STATE(必选) | 获取网络连接状态信息 |
| ACCESS_WIFI_STATE(必选) | 获取当前WiFi接入的状态以及WLAN热点的信息 |
| AD_ID(海外必选) | 获取google 广告ID |
| ACCESS_COARSE_LOCATION | 获取粗略位置信息,精度大概误差在30~1500米 |
| ACCESS_FINE_LOCATION | 获取精确位置信息,定位精度达10米以内 |
| READ_PHONE_STATE | 读取SIM卡相关信息 |
| QUERY_ALL_PACKAGES | 获取应用程序列表 |
初始化
注意事项
- 确保在用户同意隐私协议后,再进行SDK初始化
最佳实践
1.获取 TrustDeviceSe Module
const TrustDeviceSe = NativeModules.TrustDeviceSe;2.初始化
var options = {
"partner": "请输入您的合作方编码",
"appKey": "请输入您的appKey",
"appName": "请输入您的appName",
"country": "请输入您所在的国家地区",
"debug": false,
}
const isDebugMode = __DEV__;
// !!! DEBUG模式下若不设置此参数,app运行会闪退
if (isDebugMode) {
options["debug"] = true;
}
// 初始化
TrustDeviceSe.initWithOptions(options);
3.在实际业务节点获取设备信息(需要保证已调用SDK初始化方法)
// 获取设备信息
const result = await TrustDeviceSe.getDeviceInfo();
if (result) {
if (reslut["code"] == 0) {
console.log(result);
} else {
console.log(result["msg"]);
}
}响应结果
当 result["code"] == 0 时即代表获取设备信息成功,getDeviceInfo() 函数返回响应数据,包含以下信息。sealedResult 仅在启用了客户端密封结果时返回该信息。
| 字段 | 描述 |
|---|---|
| anonymousId | 设备匿名ID,设备标识 |
| blackBox | 调用日志查询标识 |
| fpVersion | SDK版本号 |
| deviceRiskScore | 当前设备风险分 |
| sealedResult | 加密的设备信息,二进制 Base64 编码字符串,仅在客户端密封结果开启时返回 |
code和msg对应值如下表:
| code | msg | 备注 |
|---|---|---|
| 0 | Success. | 成功 |
| 1000 | Invalid parameters. | 传入的参数无效 |
| 1001 | SDK error. | SDK 发生异常,可能原因: 未调用初始化函数 |
| 1002 | Network error. | 网络错误 |
| 1003 | API error. | 后端接口返回错误 |
| 1004 | Traffic limit. | 网关限流返回 |
| 1100 | Unknown error | 未知错误 |
其他说明
获取版本号
TrustDeviceSe.getSDKVersion();混淆打包
如果 Android 需要使用 proguard 进行混淆打包,请在 proguard 配置文件添加如下代码:
-keep class com.trustdecision.**{*;}全部配置
| 配置 key | 说明 | 平台 | 示例代码 | 移除字段 |
|---|---|---|---|---|
| partner(必须) | 合作方编码,请联系运营获取 | All | options["partner"] = "请输入您的合作方编码" | |
| appKey(必须) | 应用标识,参考如何申请appKey | All | options["appKey"] = "请输入您的appKey" | |
| country(必须) | cn代表中国,sg代表新加坡,us代表北美,fra代表欧洲,idna代表印尼 | All | options["country"] = "请输入您所在的国家地区" | |
| channel | 请联系运营获取 | All | options["channel"] = "请输入您的channel" | |
| debug | 反调试功能,默认关闭,开发阶段请打开,发布时关闭 | All | options["debug"] = true | |
| timeLimit | 网络请求回调的超时时间,单位秒,默认为15s | All | options["timeLimit"] = 5 | |
| location | 是否采集地理位置信息,默认开启 | All | options["location"] = true | |
| IDFA | 是否采集广告标识符,默认开启 | iOS | options["IDFA"] = true | idfa |
| deviceName | 是否采集设备名称,默认开启 | iOS | options["deviceName"] = true | device_name |
| runningTasks | 是否获取正在运行的任务,默认开启 | Android | options["runningTasks"] = true | running_packages |
| sensor | 是否采集传感器信息,默认采集 | Android | options["sensor"] = true | mangetic_field_sensor、gyroscope_sensor、light_sensor、accelerator_data、gravity_data |
| readPhone | 是否采集READ_PHONE_STATE权限相关信息,默认采集 | Android | options["readPhone"] = true | country_iso、carrier、network_operator、sim_operator、phone_type、radio_type、device_svn |
| installPackageList | 是否采集安装包列表,默认采集 | Android | options["installPackageList"] = true | installed_packages |
| OAID | 是否采集oaid,默认采集 | Android | options["OAID"] = false | oaid |
| AID | 是否采集aid,默认采集 | Android | options["AID"] = false | aid |
| ANDROID_ID | 是否采集androidid,默认采集 | Android | options["ANDROID_ID"] = false | androidid |
| customMessage | 自定义消息,sdk支持透传和存储 | All | options["customMessage"] = "" |
