本文汇总了设备风控 SDK 接入过程中的常见问题。
SDK 的大小是多少?
各平台 SDK 大小如下:
Android:单架构的 SO 文件在 3.4M 左右,AAR 包含三个架构的 SO 文件,大小在 10M 左右。集成到 APK 后,由于 APK 只会包含对应架构的 SO 文件,实际增量约 3.4M。
iOS:单架构包的文件大小在 2.7M 左右。
HarmonyOS:包的文件大小在 3M 左右。
设备风险识别 SDK 为了保证自身的抗逆向性以及数据在网络传输过程中的安全性,SDK 中有大量的插花、膨胀及加解密操作,所以 SDK 体积会相对较大。
什么是 deviceToken?
deviceToken 是 SDK 为当前设备生成的一段字符串凭证,由客户端获取后随业务请求上行,业务服务端再凭它向阿里云风险识别服务换取该设备的指纹信息与风险标签。可以把 deviceToken 理解为一张取件码,而不是设备信息本身:SDK 完成环境检测和指纹采集后,会把原始数据上报到服务端落地存储,deviceToken 只是指向这份数据的索引,因此正常情况下 token 并不承载太多设备信息本体。降级场景是例外——初始化尚未完成就获取 token 时,SDK 会把已采集字段冗余打包进 token 本体,这也是降级 token 明显变长的原因,详见“为什么不能在初始化后立即调用 getDeviceToken?”。
deviceToken 有效期为多少,能否多次调用服务端 API 使用同一个 deviceToken?
deviceToken 有效期是 7 天,可以多次调用,推荐一个 deviceToken 查询一次。
为什么不能在初始化后立即调用 getDeviceToken?
初始化接口是异步的,方法返回仅代表流程已启动,不代表已就绪。SDK 在后台还需完成环境检测、指纹采集及与服务端握手等阶段,正常网络下整体耗时约 1~2 秒,弱网、低端机或首次安装场景会更长。getDeviceToken 取的是初始化的产物:握手完成后设备信息已在服务端落地,返回的是一个精简 token;如果在此之前调用,SDK 只能走降级逻辑,把当前已采集到的字段冗余打包进 token 本体返回。
降级会带来两个后果。一是识别能力下降,token 承载的设备信息不完整,服务端的设备识别与风险判定效果打折。二是 token 显著变长,冗余字段会让长度成倍增加,除了增加网络传输开销,如果业务侧对 token 有长度约束(数据库字段、HTTP header、URL 参数等),还可能被截断,引发更隐蔽的问题。
正确的接入方式,按推荐优先级:
在初始化成功回调中调用
getDeviceToken。这是唯一确定性的方案,不依赖对初始化耗时的任何假设,也天然适配弱网和低端机。确实无法挂载回调时,用固定延时兜底:间隔不少于 2 秒 后再主动调用。该间隔是在典型耗时之上预留的安全冗余,属于经验值而非精确阈值,能降低降级概率但不能消除。
设备风险识别 SDK 支持哪些架构?
Android:支持 arm、armv7 和 arm64 三个架构。
HarmonyOS:支持 arm64 架构。
iOS:支持 arm64、x86_64 架构。