仅支持Android和iOS
集成要求
合规说明
请注意,在贵司的App中集成同盾提供的SDK产品时:
1.1 根据《网络安全法》《电信条例》《电信和互联网用户个人信息保护规定》等相关法律法规要求及监管实践中的标准,在贵司的最终用户首次启动App并在贵司开始采集信息之前,贵司应以交互界面或设计(如隐私政策弹窗等)向最终用户完整告知收集、使用、与第三方共享最终用户个人信息的目的、方式和范围,并征得最终用户的明示同意。
1.2 为向贵司提供业务安全和风控服务,同盾SDK将采集、处理、使用用户的手机终端唯一标志信息(IMEI/IDFA)、Android ID、OAID、IMSI、MEID、MAC 地址、SIM 卡序列号、设备序列号、设备类型、设备型号、系统类型、地理位置、登录 IP 地址等设备信息。为确保贵司使用相关服务的合规性,前述隐私政策应涵盖对同盾SDK提供服务并采集、处理、使用相关信息的授权,以下条款内容供贵司参考,具体表述可由贵司根据贵司隐私协议的整体框架和内容自行确定:
同盾SDK:为了业务安全和风控,我司使用了同盾 SDK,该 SDK 需要获取您的手机终端唯一标志信息(IMEI/IDFA)、Android ID、OAID、IMSI、MEID、MAC 地址、SIM卡序列号、设备序列号、设备类型、设备型号、系统类型、地理位置、登录 IP 地址、应用程序列表、运行中进程信息、传感器(光传感器、重力传感器、磁场传感器、加速度传感器、陀螺仪传感器、心率传感器)相关设备信息,用于设备欺诈风险识别。
同盾隐私协议:https://www.tongdun.cn/other/privacy/id=1
注意事项
确保在用户同意隐私协议后,再进行插件配置初始化,避免出现用户未同意隐私协议就进行插件初始化采集,引发合规风险。
环境要求
Android | iOS | |
---|---|---|
兼容版本 | Android 5.0及以上系统 | iOS9.0及以上系统 |
支持架构 | armeabi, armeabi-v7a, arm64-v8a, x86 | armv7,arm64,x86_64 |
集成步骤
安装配置
插件配置
- 在 https://ext.dcloud.net.cn/plugin?id=16592 界面下载
TrustDeviceUniPlugin
插件 - 把
TrustDecision-TrustDeviceUniPlugin
文件夹放入your_project/nativeplugins
目录 - 在 HBuilderX 点击选中
manifest.json
,选择 App原生插件配置 - 点击本地插件
[选择本地插件]
,勾选 TrustDeviceUniPlugin
Android权限申请
在工程目录下的 manifest.json ⽂件中声明以下权限
"android" : {
"permissions" : [
<!--必选权限-->
"<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\"/>"
/>"
],
...
},
初始化
注意事项
- 确保在用户同意隐私协议后,再进行SDK初始化
方法定义
vue
TrustDeviceUniPlugin.initWithOptions(options)
获取blackBox
注意事项
- 请在initWithOptions后调用getBlackBox/getBlackBoxAsync
- 不要在App内对返回的blackBox进行缓存,获取blackBox请依赖getBlackBox方法
- 尽量在首次异步获取blackBox的成功之后,再同步获取blackBox
方法定义
vue
TrustDeviceUniPlugin.getBlackBox();
最佳实践
- 在应用入口Application的onCreate方法中调用初始化并异步获取blackBox
vue
methods: {
initTrustDevice() {
const TrustDeviceUniPlugin = uni.requireNativePlugin("TrustDecision-TrustDeviceUniPlugin")
var options = {
"partner": "tongdun",
"appKey": "9b8bcadf9458119604336bb9ab0b8f8a",
"appName": "demo",
"country": "cn",
}
// !!! DEBUG模式下若不设置此参数,app运行会闪退
if (process.env.NODE_ENV === "development") {
options["debug"] = true
}
TrustDeviceUniPlugin.initWithOptions(options)
TrustDeviceUniPlugin.getBlackBoxAsync(ret => {
console.log("getBlackBoxAsync,blackBox: "+ret)
})
},
}
- 在实际业务节点同步获取blackBox
vue
getBlackBox() {
var ret = TrustDeviceUniPlugin.getBlackBox();
console.log("getBlackBox,blackBox: "+ret)
},
状态检查
- SDK上报数据成功,getBlackBox()返回的结果长度为26位字符串。如:
rGPGX1678775227I9NCwcuVJCb
。 - 异常情况下,getBlackBox()返回的结果长度可能达到5000字符,详情可查看正常blackBox和降级blackBox的差异
其他说明
获取SDK版本号
vue
var ret = TrustDeviceUniPlugin.getSDKVersion();
全部配置
配置 key | 说明 | 平台 | 示例代码 | 移除字段 |
---|---|---|---|---|
partner(必须) | 合作方编码,请联系运营获取 | All | options["partner"] = "请输入您的合作方编码" | |
appKey(必须) | 应用标识,参考如何申请appKey | All | options["appKey"] = "请输入您的appKey" | |
country(必须) | cn代表中国,sg代表新加坡,us代表北美,fra代表欧洲,idna代表印尼 | All | options["country"] = "请输入您所在的国家地区" | |
debug | 反调试功能,默认关闭,开发阶段请打开,发布时关闭 | All | options["debug"] = true | |
timeLimit | 网络请求回调的超时时间,单位秒,默认为15s | All | options["timeLimit"] = 5 | |
location | 是否采集地理位置信息,默认开启 | All | options["location"] = true | |
collectLevel | 配置降级blackBox裁剪长度,默认5000字符,配置M后2000字符左右,目前仅支持M | All | options["collectLevel"] = "M" | |
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 |
wifiMac | 是否采集WIFI MAC地址, 默认不采集 | Android | options["wifiMac"] = true |