このドキュメントでは、HarmonyOS 向けデバイス不正利用検知 SDK の統合方法について説明します。
前提条件
デバイス不正利用検知 SDK には、HarmonyOS Next (0.0.71) 以降と最小 API バージョン 12 が必要です。
シミュレーターでのデバッグはサポートされていません。
バイトコードのパッケージングのみがサポートされています。
SDK の統合がプライバシー規則に準拠していることを確認するには、Alibaba Cloud の公式 Web サイトでリリースされている最新バージョンの SDK を使用する必要があります。これにより、プライバシーの漏洩を防ぎ、お客様のビジネスがコンプライアンス規制に準拠していることを保証します。デバイス不正利用検知を使用する前に、個人情報の処理に関する規制と不正利用検知 SDK のプライバシーポリシー
権限
検出機能を強化するために、SDK には次の権限が必要です。
権限 | 必須 | 説明 |
ohos.permission.INTERNET | はい | SDK がインターネットに接続できるようにします。SDK が期待どおりに実行されるには、インターネットに接続する必要があります。 |
ohos.permission.GET_NETWORK_INFO | はい | SDK がネットワークステータス情報を取得できるようにします。SDK はネットワークステータスに基づいて、より良いサービスを提供できます。 |
ohos.permission.STORE_PERSISTENT_DATA | いいえ (デバイス不正利用検知 SDK にこの権限を付与することをお勧めします。) | アプリが永続データを保存できるようにします。これにより、デバイスフィンガープリントの安定性が向上します。 |
ohos.permission.DISTRIBUTED_DATASYNC | いいえ (デバイス不正利用検知 SDK にこの権限を付与することをお勧めします。) | SDK がマルチデバイス協調を実装できるようにします。これにより、セキュリティが強化されます。 |
ohos.permission.APP_TRACKING_CONSENT | いいえ (デバイス不正利用検知 SDK にこの権限を付与することをお勧めします。) | SDK が広告主識別子 (IDFA) に関する情報を取得できるようにします。これにより、デバイス ID の安定性が向上します。 |
HarmonyOS SDK のダウンロードと構成
HarmonyOS SDK をダウンロードして展開します。SDK は標準の HarmonyOS .har パッケージです。
.har ファイルを、プロジェクト内の .har パッケージが保存されているディレクトリにコピーします。公式の HarmonyOS ドキュメントに従い、libs ディレクトリに配置することをお勧めします。次の例に示すように、プロジェクトのルートディレクトリにある oh-package.json5 ファイルに、認証パッケージのバージョン依存関係ツリー管理を追加します。

プロジェクトの oh-package.json5 ファイルを変更し、次の例に示すように、dependencies セクションに AliyunDevice 依存関係パッケージを追加します。
{ "dependencies": { "aliyundevice": "file:../libs/HarmonyOS-AliyunDevice-xxx.har" } }
API 操作
HarmonyOS SDK には、初期化 (initWithOptions) とトークン取得 (getDeviceToken) の 2 つのコア API 操作が含まれています。
SDK の初期化
アプリの起動時にできるだけ早くこの関数を呼び出して、SDK の内部初期化を完了する必要があります。
関数構文
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: ユーザー ID の識別子。コンソールから取得できます。
options: オプションの初期化パラメーター。デフォルト値は null です。次の表に、オプションのパラメーターを示します。
フィールド
説明
例
IPv6
デバイス情報を報告するために IPv6 ドメイン名を使用するかどうかを指定します。有効な値:
0 (デフォルト): IPv4 ドメイン名が使用されます。
1: IPv6 ドメイン名が使用されます。
"1"
securityInitListener: Android 向けデバイスフィンガープリント SDK の初期化結果のリスナー。コールバック通知に基づいて初期化が成功したかどうかを確認できます。code パラメーターの値の範囲の詳細については、この Topic の「ステータスコード」セクションをご参照ください。
戻り値
なし。
クライアントトークンの取得
クライアントトークンを取得して独自のサーバーに送信します。次に、サーバー側のデバイスリスク検出イベントと返されたパラメーターを通じて、クライアントのデバイスリスク情報を取得します。
関数
export class SecurityToken { /** * 結果コード。意味については SecurityCode を参照してください */ public code:number = 0; /** * SDK によって返される deviceToken */ public token:string = ""; } public getDeviceToken(): SecurityToken応答
値は SecurityToken クラスです。
code: 操作のステータスコード。このパラメーターは、操作が成功したかどうかを示します。code パラメーターの値の範囲の詳細については、この Topic の「ステータスコード」セクションをご参照ください。
token: 後続のビジネスで Alibaba Cloud デバイス不正利用検知インターフェイスをクエリするために使用できるトークン文字列情報。
重要データレポートが遅延する可能性があるため、initWithOptions インターフェイスと getDeviceToken インターフェイスの時間間隔が 2 秒以上であることを確認してください。
良好なネットワーク環境では、トークン文字列の長さは約 1 KB です。ネットワーク環境が悪い場合、返される長さは約 2 KB です。
初期化インターフェイスはメインスレッドで、アプリケーションのライフサイクル中に 1 回だけ呼び出すことをお勧めします。
ステータスコード
SecurityCode | コード | 説明 |
SC_SUCCESS | 10000 | データ収集は成功しました。 |
SC_NOT_INIT | 10001 | データ収集は失敗しました。 |
SC_NOT_PERMISSION | 10002 | 1 つ以上の基本的な HarmonyOS 権限が SDK に付与されていません。 |
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 のバージョンと一致しません。 |
難読化構成
API 操作が難読化されて機能異常が発生するのを防ぐために、.har パッケージ内の obfuscation.txt ファイルの構成を確認してください。このファイルを削除しないでください。
サンプルコード
デバイス不正利用検知 SDK を初期化します。アプリの起動時にできるだけ早く initWithOptions インターフェイスを呼び出す必要があります。
ALIYUN_APPKEY パラメーターはユーザー ID を識別するために使用され、Alibaba Cloud 管理コンソールの「デバイスアプリ管理」から取得できます。
SecurityDevice.getInstance().initWithOptions(getContext(),
this.ALIYUN_APPKEY, null, null);アカウントの受付やプロモーション活動など、不正利用検知が必要なビジネスシナリオでは、クライアントのトークンを取得し、そのトークンをアプリケーションサーバーに送信する必要があります。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 秒後に操作を呼び出してトークンを取得する。
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 を呼び出すには、次のドキュメントをご参照ください。