本文檔介紹了裝置風險SDK(Harmony系統)的接入流程。
前提條件
裝置風險SDK需要在Harmony Next (0.0.71)及以上版本的系統運行,API版本最低支援12。
不支援模擬器模式調試。
僅支援開啟位元組碼打包方案。
為協助落實針對您產品整合第三方SDK情況所應履行的隱私合規義務,降低隱私違規風險,進而實現您產品合規營運的營運目標,請您務必確保選用阿里雲文檔中心官網發布的最新版本產品。在使用裝置風險識別前,請您務必仔細瞭解個人資訊處理規定及《風險識別SDK隱私權政策》進行接入。
許可權說明
為增強風險識別的識別效果,當前SDK需要以下許可權:
許可權 | 是否必須 | 說明 |
ohos.permission.INTERNET | 是 | 連網許可權。SDK需要連網才能使用。 |
ohos.permission.GET_NETWORK_INFO | 是 | 網路狀態確認。SDK可以根據網路狀態提供更好的服務。 |
ohos.permission.STORE_PERSISTENT_DATA | 否(推薦賦予) | 允許應用儲存持久化的資料。SDK可以增加裝置指紋穩定性。 |
ohos.permission.DISTRIBUTED_DATASYNC | 否(推薦賦予) | 多裝置協同。SDK可以檢測多裝置狀態,增強安全效果。 |
ohos.permission.APP_TRACKING_CONSENT | 否(推薦賦予) | 擷取廣告標識符許可權。SDK擷取IDFA資訊,增強裝置ID穩定性。 |
下載和配置Harmony SDK
下載Harmony SDK,並完成解壓。SDK為Harmony標準的.har包。
將har檔案拷貝到工程中存放har包的目錄。建議參考鴻蒙官方文檔放至libs目錄下,在工程根目錄的oh-package.json5添加認證包的版本依賴樹管理,樣本如下:

修改專案工程中的oh-package.json5檔案,在dependencies中添加AliyunDevice依賴包,樣本如下:
{ "dependencies": { "aliyundevice": "file:../libs/HarmonyOS-AliyunDevice-xxx.har" } }
介面說明
Harmony SDK包含初始化(initWithOptions)、擷取Token(getDeviceToken)2個核心介面。
初始化SDK
完成SDK內部初始化,在App啟動的時候,您需要儘可能早的調用該函數。
函數原型
export class SecurityInitListener { // code表示介面調用狀態代碼 onInitFinish(code: number): void {} } public initWithOptions(ctx: Context, userAppKey: string, options: Map<string, string>, securityInitListener: SecurityInitListener): void;參數
ctx:當前Ability的Context。
userAppKey:用於標識使用者身份, 控制台進行擷取。
options:初始化可選項,預設可以為null。選擇性參數如下。
欄位名
說明
樣本
IPv6
是否使用IPv6網域名稱上報裝置資訊。
預設為“0”:使用IPv4網域名稱;
“1”:使用IPv6網域名稱。
"1"
securityInitListener:裝置風險SDK初始化回調介面,可在回調中判斷初始化是否成功。其中,code欄位取值範圍可參考“狀態傳回值”。
傳回值
無。
擷取用戶端Token
擷取用戶端Token,並上報到業務自己的伺服器,後續通過伺服器端裝置風險識別事件及返回參數,從而擷取用戶端裝置風險資訊。
函數原型
export class SecurityToken { /** * 結果Code, 含義參照SecurityCode */ public code:number = 0; /** * SDK返回的deviceToken */ public token:string = ""; } public getDeviceToken(): SecurityToken傳回值
SecurityToken類型。
code:返回介面調用狀態代碼,可用於判斷介面調用是否成功。code欄位取值範圍可參考“狀態傳回值”。
token:返回 Token 字串資訊,商務就緒後續查詢阿里雲裝置風險識別介面。
重要因資料上報可能存在延遲,請確保SDK的資訊採集initWithOptions介面和getDeviceToken介面調用時間間隔2秒以上。
Token字串在網路環境良好的情境下,長度為1K左右;在網路環境較差的情境下,返回的長度在2K左右。
建議初始化介面在主線程內調用,且應用的生命週期內只需要調用1次。
狀態傳回值
SecurityCode | Code | 備忘 |
SC_SUCCESS | 10000 | SDK資訊採集成功。 |
SC_NOT_INIT | 10001 | SDK未資訊採集。 |
SC_NOT_PERMISSION | 10002 | SDK需要的Harmony基礎許可權未完全授權。 |
SC_UNKNOWN_ERROR | 10003 | 系統未知錯誤。 |
SC_NETWORK_ERROR | 10004 | 網路錯誤。 |
SC_NETWORK_ERROR_EMPTY | 10005 | 網路錯誤,返回內容為空白串。 |
SC_NETWORK_ERROR_INVALID | 10006 | 網路返回的格式非法。 |
SC_PARSE_SRV_CFG_ERROR | 10007 | 服務端配置解析失敗。 |
SC_NETWORK_RET_CODE_ERROR | 10008 | 網關返回失敗。 |
SC_APPKEY_EMPTY | 10009 | AppKey為空白。 |
SC_PARAMS_ERROR | 10010 | 其他參數錯誤。 |
SC_FGKEY_ERROR | 10011 | 密鑰計算錯誤。 |
SC_APPKEY_ERROR | 10012 | SDK版本和AppKey版本不匹配。 |
介面混淆配置
為避免介面被混淆而造成功能異常,請查看har包中obfuscation.txt檔案中的配置,請勿移除該檔案。
範例程式碼
初始化裝置風險識別SDK,initWithOptions介面需要在APP啟動儘可能早的時候調用。
其中,參數ALIYUN_APPKEY用於標識使用者身份,可在阿里雲控制台的裝置App管理申請擷取。
SecurityDevice.getInstance().initWithOptions(getContext(),
this.ALIYUN_APPKEY, null, null);在業務需要風險識別的情境下(如註冊、活動推廣等)擷取戶端Token並上報到業務的伺服器端。確保initWithOptions和getDeviceToken介面的調用間隔在2秒以上。
從SDK 2.0.0版本開始,getDeviceToken改為同步調用,舊版非同步代碼需調整。
let tokenObj: SecurityToken = SecurityDevice.getInstance().getDeviceToken();
if (tokenObj.code == SecurityCode.SC_SUCCESS) {
console.log("Aliyun Token: " + tokenObj.token);
} else {
console.log("Aliyun Code: " + tokenObj.code);
}完整代碼:
import { SecurityCode, SecurityToken, SecurityDevice } from 'aliyundevice';
@Entry
@Component
struct Index {
@State message: string = 'Aliyun Device';
@State ALIYUN_APPKEY: string = "XXX";
build() {
Row() {
Column() {
Button(this.message)
.fontSize(18)
.fontWeight(FontWeight.Bold)
.onClick((event: ClickEvent) => {
// 初始化SDK
SecurityDevice.getInstance().initWithOptions(getContext(), this.ALIYUN_APPKEY, null, null);
// 延時2秒擷取Token
setTimeout(() => {
let tokenObj: SecurityToken = SecurityDevice.getInstance().getDeviceToken();
if (tokenObj.code == SecurityCode.SC_SUCCESS) {
console.log("Aliyun Token: " + tokenObj.token);
} else {
console.log("Aliyun Code: " + tokenObj.code);
}
}, 2000);
})
.margin({ top: 10 })
}
.width('100%')
}
.height('100%')
}
}調用風險識別API介面
請參考以下文檔來構建請求並調用風險識別API介面: