すべてのプロダクト
Search
ドキュメントセンター

Fraud Detection:iOS 向け Device Fraud Detection SDK を統合する

最終更新日:Jan 11, 2025

このトピックでは、iOS 向け Device Fraud Detection SDK を統合する方法について説明します。

前提条件

iOS 向け Device Fraud Detection SDK には、iOS 9.0 以降が必要です。

コンプライアンス条件

1. アプリは、ユーザーがアプリを初めて起動したときに、Fraud Detection SDK プライバシーポリシーを掲示する必要があります。これにより、ユーザーから Fraud Detection SDK を使用するための同意を得ることができます。ユーザーは、続行する前にプライバシーポリシーを読み、同意する必要があります。デフォルトでユーザーがプライバシーポリシーを読み、同意したと想定しないでください。

2. プライバシーポリシーでは、ユーザーに次の項目を通知する必要があります。

  • SDK 名:Device Fraud Detection SDK

  • サービス範囲:改ざんデバイス、エミュレーター、悪意のあるスクリプトなど、異常なデバイスの検出。

  • 収集されるデバイス情報:Fraud Detection を使用して Device Fraud Detection SDK を統合する場合、不正行為やチート行為を検出し、デバイスの信頼性を検証するために、ユーザーから次の情報が必要です。

    • 基本情報:デバイスの製造元、デバイスのブランド、デバイスのタイプとモデル、デバイス名、デバイスのオペレーティングシステム情報、デバイスのメモリとストレージ容量、センサーリスト、バッテリーとバッテリーの使用状況情報、ベースバンド情報、起動時間、画面の明るさと解像度、CPU 情報、システムタイムゾーン、システム言語、充電状態、およびシステムカーネル情報。

    • 識別情報(必須):ベンダー識別子(IDFV)。

    • 識別情報(オプション):国際移動体装置識別番号(IMEI)、国際移動体加入者識別番号(IMSI)、MAC アドレス、集積回路カード識別子(ICCID)、ハードウェアシリアル番号、広告主識別子(IDFA)、Android デバイス ID、オープン匿名デバイス識別子(OAID)、Google 広告 ID(AID)、および Bluetooth MAC。

    • ネットワーク情報:IP アドレス(オプション)、近くの WIFI リスト(オプション)、基本サービスセット識別子(BSSID)、サービスセット識別子(SSID)、キャリア情報、ネットワークタイプ、ネットワーク状態、SIM カードの状態、およびネットワークカード情報。 BSSID と SSID はオプションです。

    • アプリ情報:SDK が統合されているアプリに関する情報(アプリ名、アプリバージョン、インストール時間、アプリリスト(オプション)など)。

  • プライバシーポリシーリンク:Fraud Detection SDK プライバシーポリシー

3. Device Fraud Detection SDK を使用して情報を収集する前に、ユーザーがプライバシーポリシーに同意していることを確認してください。必要でない場合は、アプリの起動時にデバイス情報を収集しないでください。過度または時期尚早なデータ収集を防ぎます。

権限の説明

アプリを App Store に公開する前に、次の表のフィールドと説明がアプリの Info.plist ファイルに追加されていることを確認してください。これにより、不正検出の効率が向上します。フィールドまたは説明を追加しないと、アプリが App Store に公開されない場合があります。

権限

必須

説明

NSLocalNetworkUsageDescription

いいえ(この権限を Device Fraud Detection SDK に付与することをお勧めします。)

ローカルエリアネットワーク(LAN)内のデバイスの接続性を取得して、デバイスファームやグループ制御などのリスクを発見するための権限。

NSUserTrackingUsageDescription

いいえ

デバイスの IDFA を取得するための権限。これにより、デバイスで操作が実行された後も、デバイスの ID を常に取得できます。

Device Fraud Detection SDK のダウンロードと設定

1. iOS 向け Device Fraud Detection SDK をダウンロードし、Fraud Detection コンソールでアプリキーを作成します。 SDK パッケージは、Xcode 用の標準の静的フレームワークパッケージです。 iOS 向け Device Fraud Detection SDK のダウンロード方法の詳細については、Fraud Detection コンソールにアクセスしてください。

2. SDK パッケージ内の deviceiOS.framework ファイルを iOS プロジェクトディレクトリにコピーします。

3. 必要なプロジェクトを選択し、ビルドフェーズ>ライブラリとのバイナリリンク を選択して、deviceiOS.framework と依存関係を追加します。

AppTrackingTransparency.framework
CoreTelephony.framework
libresolv.tbd
Security.framework
AdSupport.framework
libz.tbd
libc++.tbd
deviceiOS.framework

iOS SDK

4. 開発者センターページ で Objective-C デモパッケージをダウンロードします。 [デバイスアプリキー] タブで、[デバイス SDK のダウンロード] をクリックします。表示されるページで、SDK をダウンロードします。 Android 向け SDK のバージョンは A. で始まり、iOS 向け SDK のバージョンは I. で始まります。

5. ビジネス要件に基づいて SDK を選択します。 SDK バージョンに idfa サフィックスが付いている場合、機密情報を収集できます。詳細については、SDK ダウンロードリストを参照してください。

Device Fraud Detection SDK を使用してデータを収集する

Device Fraud Detection SDK を使用してデータを収集するには、ユーザーがプライバシーポリシーに同意していることを確認してください。リスクシナリオでは、できるだけ早く Device Fraud Detection SDK を使用してデータを収集します。

  • 関数

@interface SecurityDevice : NSObject
- (void)initDevice:(NSString *)userAppKey 
  	withOptions:(NSMutableDictionary *)options 
    callback:(void (^)(int))initCallback;
// ...
@end
  • パラメーター

    • userAppKey:ユーザーの ID。Fraud Detection コンソールの デバイスアプリキー タブで ID を取得できます。

    • options:データを収集するためのオプションパラメーター。デフォルト値は nil にできます。次の表に、オプションパラメーターを示します。

パラメーター

説明

IPv6

デバイス情報を報告するために IPv6 ドメイン名を使用するかどうかを指定します。有効な値:

0(デフォルト値):IPv4 ドメイン名を使用します。

1:IPv6 ドメイン名を使用します。

"1"

CustomUrl

データを報告する自己管理サーバーのドメイン名。

"https://cloudauth-device.aliyuncs.com"

CustomHost

データを報告する自己管理サーバーのホスト。

"cloudauth-device.aliyuncs.com"

initCallback:Device Fraud Detection SDK によるデータ収集のコールバック操作。データが収集されたかどうかを判断するために使用できます。 Code パラメーターの値の範囲の詳細については、このトピックの「HTTP ステータスコード」セクションを参照してください。

戻り値:なし。

説明

注:initCallback によって返される Code パラメーターの値が 10000 でない場合は、データ収集が成功するまで、後続の操作で initDevice 操作を呼び出してデータを収集できます。

クライアントトークンを取得する

クライアントトークンを取得し、トークンをサーバーに報告してから、イベントパラメーターとレスポンスパラメーターに基づいてデバイスリスク情報を取得します。詳細については、「Device Fraud Detection のサービスイベントパラメーターとレスポンスパラメーター」をご参照ください。

  • 関数

@interface SecurityDevice : NSObject
// ...
- (SecurityToken *) getDeviceToken;
@end

入力:なし。

戻り値:値は SecurityToken クラスです。

  • Code:操作の呼び出しステータスコード。ステータスコードに基づいて、呼び出しが成功したかどうかを確認できます。 Code パラメーターの値の範囲の詳細については、このトピックの「ステータスコード」セクションを参照してください。

  • Token:クライアントに返されるトークン。 token を使用して、Device Fraud Detection 操作を呼び出すことができます。

@interface SecurityToken : NSObject

// トークンを取得する操作の結果。
@property(atomic) int code;

 // トークン文字列。
@property(copy, atomic) NSString *token;

@end

token を取得するための推奨事項:

1. initDevice コールバックが Code パラメーターに 10000 を返した場合、トークンを取得します。

2. initDevice 操作を呼び出した後、initDevice コールバックの戻り結果を待機したくない場合は、getDeviceToken 操作を呼び出す前に少なくとも 2 秒待機することをお勧めします。これは、データレポートの遅延が原因である可能性があります。

3. デバイスリスク情報を照会するたびに、新しい token を取得します。 token の有効期間は 7 日間です。

HTTP ステータスコード

コード

説明

10000

データ収集は成功しました。

10001

データ収集に失敗しました。

10002

SDK で必要な基本的な権限が完全に承認されていません。

10003

不明なシステムエラーが発生しました。

10004

ネットワークエラーが発生しました。

10005

ネットワークエラーが発生し、戻り値は空の文字列です。

10006

レスポンスの形式が無効です。

10007

システムがサーバー設定を解析できませんでした。

10008

内部データ収集が完了していません。

サンプルコード

Device Fraud Detection SDK を使用してデータを収集する場合は、リスクシナリオでできるだけ早く initDevice 操作を呼び出す必要があります。

説明

Apple のプライバシーポリシーでは、IDFA の使用は plist ファイルで説明し、IDFA の使用に同意を求めるメッセージを表示する必要があると規定されています。したがって、開発環境に Xcode 12 以降がインストールされていることを確認してください。

typedef void (^IDFARequestBlock)(bool success);

API_AVAILABLE(ios(14))
static bool isATTrackingEnabled(ATTrackingManagerAuthorizationStatus status) {
    if (ATTrackingManagerAuthorizationStatusAuthorized == status) {
        return true;
    }
    return false;
}

- (void)helperRequestIDFAPermissionWithBlock:(IDFARequestBlock) complete {
    if (@available(iOS 14, *)) {
        ATTrackingManagerAuthorizationStatus authStatus = ATTrackingManager.trackingAuthorizationStatus;
        if (ATTrackingManagerAuthorizationStatusNotDetermined == authStatus) {
            [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
                if (nil != complete) {
                    return complete(isATTrackingEnabled(status));
                }
            }];
        } else if (nil != complete) {
            return complete(isATTrackingEnabled(authStatus));
        }
    }
}

- (void)initSecurityDevice {
    SecurityDevice *securityDevice = [SecurityDevice sharedInstance];
    [securityDevice initDevice: @ "ALIYUN_APPKEY": ^ (int code) {
        NSString * initResult = [NSString stringWithFormat: @ "init code: %d", code];
        NSLog(@ "%@", initResult);
        if (10000 != code) {
            NSLog(@ "init error.");
        } else {
            NSLog(@ "init success");
        }
    }];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // iOS 14 以降では、ポップアップダイアログボックスを使用して IDFA を使用する権限を取得します。
    if (@available(iOS 14, *)) {
        [self helperRequestIDFAPermissionWithBlock:^(bool success) {
            if (success) {
                NSLog(@"IDFA Permission OK.");
            } else {
                NSLog(@"No IDFA Permission.");
            }
            
            [self initSecurityDevice];
        }];
    } else {
        [self initSecurityDevice];
    }
}

アカウント登録やプロモーション活動など、不正検出が必要なビジネシナリオでは、クライアントの token を取得し、トークンをサーバーに送信する必要があります。その後、デバイスリスク情報を照会できます。

SecurityDevice *securityDevice = [SecurityDevice sharedInstance];
SecurityToken * deviceToken = [securityDevice getDeviceToken];
NSString * rs = [NSString stringWithFormat: @ "[%d]%@", deviceToken.code, deviceToken.token];
NSLog(@ "deviceToken: %@", rs);

// トークンを自己管理サーバーに送信し、Device Fraud Detection 操作を呼び出します。
// ...

Device Fraud Detection 操作を呼び出す

deviceToken パラメーターとその他の関連パラメーターを使用して、Device Fraud Detection 操作を呼び出します。詳細については、次のトピックを参照してください。

Device Fraud Detection のサービスイベントパラメーターとレスポンスパラメーター