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

Web Application Firewall:iOS アプリへの Anti-Bot SDK の統合

最終更新日:Apr 01, 2026

Anti-Bot SDK は、ご利用の iOS アプリからのすべてのリクエストに署名します。WAF は署名を検証し、リクエストがサーバーに到達する前にボットトラフィックを検出してブロックします。

前提条件

開始する前に、以下を確認してください。

  • ターゲットデバイスに iOS 9.0 以降が搭載されていること

  • App Protection が購入され、有効化されています。 詳細については、「App Protection を有効化する手順」をご参照ください。

  • iOS SDK パッケージ (AliTigerTally_IDFA.framework または AliTigerTally_NOIDFA.framework) があること。SDK を入手するには、チケットを提出してください。

  • アプリケーションキー。 取得するには、WAF コンソールにログインし、[保護設定] > [ウェブサイト保護] に移動し、[ボット管理] タブを開き、[アプリ保護] を有効にして、[アプリケーションキーの取得とコピー] をクリックします。

各 Alibaba Cloud アカウントには 1 つのアプリキーがあり、WAF インスタンス内のすべてのドメイン名で共有されます。同じアプリキーは、Android アプリと iOS アプリの両方で機能します。
App Protection

アプリキーの例:

****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****

SDK バージョンの選択

SDK には、ご利用のアプリが広告識別子 (IDFA) を使用するかどうかに応じて、2 つのバージョンがあります。

バージョンフレームワークファイル使用条件
IDFAAliTigerTally_IDFA.frameworkご利用のアプリが IDFA を使用する場合
非 IDFAAliTigerTally_NOIDFA.frameworkお使いのアプリは IDFA を使用していません

仕組み

  1. SDK は vmpSign を使用してリクエストボディに署名し、署名トークン (wToken) を返します。

  2. ご利用のアプリは wToken を HTTP リクエストヘッダーにアタッチし、リクエストを送信します。

  3. WAF はすべてのインバウンドリクエストで wToken を解析し、悪意のあるトラフィックをブロックし、正当なリクエストをサーバーに転送します。

ログイン、支払い送信、または保護が必要な操作など、ビジネス上重要なイベントでリクエストに署名します。

SDK の統合

ステップ 1: Xcode プロジェクトのセットアップ

Xcode でご利用の iOS プロジェクトを開き、SDK フレームワークをプロジェクトディレクトリにコピーします。

ステップ 2: 依存ライブラリの追加

ターゲットに以下のライブラリを追加します。

ライブラリ非 IDFA バージョンIDFA バージョン
libc++.tbd必須必須
CoreTelephony.framework必須必須
libresolv.9.tbd必須必須
AdSupport.framework不要必須

ステップ 3: -ObjC リンカーフラグの追加

ビルド設定」で、-ObjC を「その他のリンカーフラグ」に追加します。

ステップ 4: SDK ヘッダーのインポート

Objective-C — SDK を呼び出す任意のソースファイルにインポートを追加します。

// Non-IDFA version
#import <AliTigerTally_NOIDFA/AliTigerTally.h>

// IDFA version
#import <AliTigerTally_IDFA/AliTigerTally.h>

Swift — ブリッジングヘッダーファイルを作成し、インポートを追加します。

#ifndef TigerTally_sdk_Swift_h
#define TigerTally_sdk_Swift_h

// Non-IDFA version
#import <AliTigerTally_NOIDFA/AliTigerTally.h>
// IDFA version
#import <AliTigerTally_IDFA/AliTigerTally.h>

#endif /* TigerTally_sdk_Swift_h */

次に、[ビルド設定] > [Objective-C ブリッジングヘッダー] でブリッジングヘッダーパスを設定します。

ステップ 5: ユーザー ID の設定 (オプション)

setAccount を呼び出して、ユーザー ID を SDK リクエストに関連付けます。これにより、よりきめ細かい WAF 保護ポリシーを構築できます。ゲストユーザーの場合は、この呼び出しをスキップし、直接 initialize に進みます。

構文:

-(void)setAccount:(NSString*)account
パラメーター説明
accountNSString*ユーザー ID。生の識別子ではなく、マスクされた値を使用します。

Objective-C:

// Use a masked user ID
[[AliTigerTally sharedInstance] setAccount:@"testAccount"];

Swift:

AliTigerTally.sharedInstance().setAccount("testAccount")

ステップ 6: SDK の初期化

アプリキーを指定して initialize を呼び出し、SDK を開始してデバイス情報を収集します。デバイス情報をリフレッシュする必要がある場合は、いつでも再度呼び出してください。

構文:

-(bool)initialize:(NSString*)appKey
パラメーター説明
appKeyNSString*SDK 認証キー。

成功した場合は true、失敗した場合は false を返します。

Objective-C:

NSString *appKey = @"****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****";
if ([[AliTigerTally sharedInstance] initialize:appKey]) {
    NSLog(@"Initialization successful.");
} else {
    NSLog(@"Initialization failed.");
}

Swift:

let binit = AliTigerTally.sharedInstance().initialize("****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****")
if binit {
    NSLog("Initialization successful.")
} else {
    NSLog("Initialization failed.")
}

ステップ 7: リクエストの署名

リクエストボディの署名トークンを生成するには、vmpSign を呼び出します。

構文:

-(NSString*)vmpSign:(NSData*)inputBody
パラメーター説明
inputBodyNSData*署名するリクエストボディ。

成功した場合は署名文字列 (NSString*) を返します。この署名は wToken と呼ばれます。

エラー戻り値:

戻り値原因修正
you must call initializeinitialize が呼び出されませんでしたvmpSign の前に initialize
you must input bodyinputBody が指定されませんでしたvmpSign
NULL初期化が完了していませんvmpSign を再度呼び出します

Objective-C:

if (![[AliTigerTally sharedInstance] initialize:@"****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****"]) {
    NSLog(@"Initialization failed.");
    return;
}
NSString *signBody = @"hello";
NSString *wToken = [[AliTigerTally sharedInstance] vmpSign:[signBody dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"wToken: %@", wToken);

Swift:

if !AliTigerTally.sharedInstance().initialize("****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****") {
    NSLog("Initialization failed.")
    return
}
let signBody = "hello"
let token = AliTigerTally.sharedInstance().vmpSign(signData)
NSLog(token)

ステップ 8: 署名済みリクエストの送信

wToken を HTTP リクエストヘッダーに追加し、リクエストを送信します。

Objective-C:

NSURL *url = [NSURL URLWithString:@"https://xxxxxx/test?id=123"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:10];
[request setValue:wToken forHTTPHeaderField:@"wToken"];
request.HTTPMethod = @"post";
request.HTTPBody = [signBody dataUsingEncoding:NSUTF8StringEncoding];

NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession]
    dataTaskWithRequest:request
      completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
          if (error) {
              NSLog(@"Request failed: %@", error);
          } else {
              NSLog(@"Request sent.");
          }
      }];
[dataTask resume];

Swift:

guard let url = URL(string: "https://xxxxxx/test?id=123") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue(token, forHTTPHeaderField: "wToken")

URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Request failed: \(error)")
    } else {
        print("Request sent.")
    }
}.resume()

(オプション) サンプルプロジェクトでのテスト

本番アプリに統合する前に、Xcode でテスト iOS プロジェクトを作成して統合手順を確認します。

次の図は、TigerTally_sdk_test という名前のサンプルテストプロジェクトを示しています。

Test project