Anti-Bot SDK menandatangani setiap permintaan dari aplikasi iOS Anda. WAF memverifikasi tanda tangan tersebut untuk mendeteksi dan memblokir lalu lintas bot sebelum mencapai server Anda.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
iOS 9.0 atau versi lebih baru pada perangkat target Anda
App Protection yang telah dibeli dan diaktifkan. Lihat Prosedur mengaktifkan App Protection
Paket SDK iOS (
AliTigerTally_IDFA.frameworkatauAliTigerTally_NOIDFA.framework). Ajukan ticket untuk mendapatkan SDKKunci aplikasi (app key) Anda. Untuk mendapatkannya, login ke Konsol WAF, buka Protection Configurations > Website Protection, buka tab Bot Management, aktifkan App Protection, lalu klik Obtain and Copy Appkey
Setiap Akun Alibaba Cloud memiliki satu app key yang digunakan bersama oleh semua nama domain dalam instans WAF Anda. App key yang sama berlaku untuk aplikasi Android maupun iOS.

Contoh app key:
****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****Pilih versi SDK
SDK tersedia dalam dua versi tergantung pada apakah aplikasi Anda menggunakan Identifier for Advertisers (IDFA):
| Versi | File framework | Gunakan saat |
|---|---|---|
| IDFA | AliTigerTally_IDFA.framework | Aplikasi Anda menggunakan IDFA |
| Non-IDFA | AliTigerTally_NOIDFA.framework | Aplikasi Anda tidak menggunakan IDFA |
Cara kerja
SDK menandatangani badan permintaan menggunakan
vmpSigndan mengembalikan token tanda tangan (wToken).Aplikasi Anda melampirkan
wTokenke Header permintaan HTTP dan mengirim permintaan tersebut.WAF mengurai
wTokenpada setiap permintaan inbound, memblokir lalu lintas berbahaya, dan meneruskan permintaan sah ke server Anda.
Tandatangani permintaan pada event penting seperti login, pengiriman pembayaran, atau tindakan apa pun yang memerlukan perlindungan.
Integrasikan SDK
Langkah 1: Siapkan proyek Xcode
Buka proyek iOS Anda di Xcode dan salin framework SDK ke direktori proyek.
Langkah 2: Tambahkan library dependensi
Tambahkan library berikut ke target Anda:
| Library | Versi Non-IDFA | Versi IDFA |
|---|---|---|
libc++.tbd | Diperlukan | Diperlukan |
CoreTelephony.framework | Diperlukan | Diperlukan |
libresolv.9.tbd | Diperlukan | Diperlukan |
AdSupport.framework | Tidak diperlukan | Diperlukan |
Langkah 3: Tambahkan flag linker -ObjC
Pada Build Settings, tambahkan -ObjC ke Other Linker Flags.
Langkah 4: Impor header SDK
Objective-C — tambahkan impor ke file sumber mana pun yang memanggil SDK:
// Versi Non-IDFA
#import <AliTigerTally_NOIDFA/AliTigerTally.h>
// Versi IDFA
#import <AliTigerTally_IDFA/AliTigerTally.h>Swift — buat file bridging header dan tambahkan impor:
#ifndef TigerTally_sdk_Swift_h
#define TigerTally_sdk_Swift_h
// Versi Non-IDFA
#import <AliTigerTally_NOIDFA/AliTigerTally.h>
// Versi IDFA
#import <AliTigerTally_IDFA/AliTigerTally.h>
#endif /* TigerTally_sdk_Swift_h */Kemudian atur path bridging header di Build Settings > Objective-C Bridging Header.
Langkah 5: Atur user ID (opsional)
Panggil setAccount untuk mengaitkan user ID dengan permintaan SDK. Hal ini memungkinkan Anda membuat kebijakan perlindungan WAF yang lebih terperinci. Untuk pengguna tamu, lewati pemanggilan ini dan langsung lanjutkan ke initialize.
Sintaks:
-(void)setAccount:(NSString*)account| Parameter | Tipe | Deskripsi |
|---|---|---|
account | NSString* | User ID. Gunakan nilai yang telah dimasking, bukan identifier mentah. |
Objective-C:
// Gunakan user ID yang telah dimasking
[[AliTigerTally sharedInstance] setAccount:@"testAccount"];Swift:
AliTigerTally.sharedInstance().setAccount("testAccount")Langkah 6: Inisialisasi SDK
Panggil initialize dengan app key Anda untuk menjalankan SDK dan mengumpulkan informasi perangkat. Panggil kembali kapan saja Anda perlu merefresh informasi perangkat.
Sintaks:
-(bool)initialize:(NSString*)appKey| Parameter | Tipe | Deskripsi |
|---|---|---|
appKey | NSString* | Kunci otentikasi SDK Anda. |
Mengembalikan true jika berhasil, false jika gagal.
Objective-C:
NSString *appKey = @"****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****";
if ([[AliTigerTally sharedInstance] initialize:appKey]) {
NSLog(@"Inisialisasi berhasil.");
} else {
NSLog(@"Inisialisasi gagal.");
}Swift:
let binit = AliTigerTally.sharedInstance().initialize("****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****")
if binit {
NSLog("Inisialisasi berhasil.")
} else {
NSLog("Inisialisasi gagal.")
}Langkah 7: Tandatangani permintaan
Panggil vmpSign untuk menghasilkan token tanda tangan untuk badan permintaan.
Sintaks:
-(NSString*)vmpSign:(NSData*)inputBody| Parameter | Tipe | Deskripsi |
|---|---|---|
inputBody | NSData* | Badan permintaan yang akan ditandatangani. |
Mengembalikan string tanda tangan (NSString*) jika berhasil. Tanda tangan ini disebut sebagai wToken.
Nilai kembali error:
| Nilai kembali | Penyebab | Perbaikan |
|---|---|---|
you must call initialize | initialize belum dipanggil | Panggil initialize sebelum vmpSign |
you must input body | inputBody tidak diberikan | Berikan badan permintaan saat memanggil vmpSign |
NULL | Inisialisasi belum selesai | Panggil vmpSign lagi |
Objective-C:
if (![[AliTigerTally sharedInstance] initialize:@"****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****"]) {
NSLog(@"Inisialisasi gagal.");
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("Inisialisasi gagal.")
return
}
let signBody = "hello"
let token = AliTigerTally.sharedInstance().vmpSign(signData)
NSLog(token)Langkah 8: Kirim permintaan yang telah ditandatangani
Tambahkan wToken ke Header permintaan HTTP dan kirim permintaan tersebut.
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(@"Permintaan gagal: %@", error);
} else {
NSLog(@"Permintaan terkirim.");
}
}];
[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("Permintaan gagal: \(error)")
} else {
print("Permintaan terkirim.")
}
}.resume()(Opsional) Uji dengan proyek contoh
Sebelum mengintegrasikan ke aplikasi produksi Anda, buat proyek iOS uji di Xcode untuk memverifikasi langkah-langkah integrasi.
Gambar berikut menunjukkan proyek uji contoh bernama TigerTally_sdk_test.
