Topik ini menjelaskan cara mengintegrasikan Anti-Bot SDK ke dalam aplikasi iOS. Dalam dokumen ini, Anti-Bot SDK disebut sebagai SDK. Sebelum mengaktifkan fitur Perlindungan Aplikasi dari Web Application Firewall (WAF) untuk aplikasi iOS Anda, Anda harus mengintegrasikan SDK ke dalam aplikasi tersebut.
Batasan
Aplikasi iOS Anda harus menggunakan iOS 9.0 atau yang lebih baru. Jika versi iOS lebih lama dari 9.0, Anda tidak dapat mengintegrasikan SDK ke dalam aplikasi iOS Anda.
Prasyarat
Fitur perlindungan aplikasi telah dibeli dan diaktifkan.
Untuk informasi lebih lanjut, lihat Prosedur untuk Mengaktifkan Perlindungan Aplikasi.
SDK untuk aplikasi iOS telah diperoleh.
Untuk mendapatkan SDK untuk aplikasi iOS, ajukan Tiket untuk mendapatkan dukungan teknis.
SDK mendukung dua versi: Identifier for Advertising (IDFA) dan non-IDFA. File SDK berikut disediakan untuk masing-masing versi:
AliTigerTally_IDFA.framework
AliTigerTally_NOIDFA.framework
Jika Anda menggunakan versi IDFA, kami sarankan untuk mengintegrasikan SDK versi AliTigerTally_IDFA ke dalam aplikasi iOS Anda. Jika Anda menggunakan versi non-IDFA, kami sarankan untuk mengintegrasikan SDK versi AliTigerTally_NOIDFA ke dalam aplikasi iOS Anda.
Kunci autentikasi SDK, yaitu
app key, telah diperoleh.Untuk mendapatkan app key, masuk ke Konsol Web Application Firewall dan pilih . Pada tab Manajemen Bot halaman Perlindungan Situs Web, aktifkan App Protection dan klik Obtain and Copy Appkey. Kunci autentikasi SDK digunakan untuk mengirim permintaan inisialisasi SDK. Kunci ini harus disertakan dalam kode integrasi.
CatatanSetiap akun Alibaba Cloud memiliki
app keyunik, yang dapat digunakan untuk semua nama domain di instance WAF Anda. Anda dapat menggunakanapp key, baik Anda mengintegrasikan SDK ke dalam aplikasi Android maupun aplikasi iOS.
Contoh kunci autentikasi:
****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****
Informasi Latar Belakang
SDK digunakan untuk menandatangani permintaan yang dikirim oleh klien aplikasi. WAF memverifikasi tanda tangan permintaan untuk mendeteksi dan memblokir permintaan jahat.
(Opsional) Buat proyek uji iOS
Anda dapat mengintegrasikan SDK langsung ke proyek iOS aktual. Namun, Anda juga dapat membuat proyek uji iOS untuk mempelajari proses integrasi sebelum mengintegrasikan SDK ke dalam proyek utama.
Dalam contoh ini, Xcode digunakan untuk membuat proyek uji iOS.
Gambar berikut menunjukkan proyek uji bernama TigerTally_sdk_test.
Prosedur
Gunakan Xcode untuk membuka proyek uji iOS dan masuk ke direktori file.
Salin SDK ke proyek.
Tambahkan pustaka dependensi ke proyek.
Pustaka dependen
Diperlukan untuk versi Non-IDFA
Diperlukan untuk versi IDFA
libc++.tbd
Ya
Ya
CoreTelephony.framework
Ya
Ya
libresolv.9.tbd
Ya
Ya
AdSupport.framework
Tidak
Ya
Klik tab Build Settings dan tambahkan flag linker -ObjC ke pengaturan Other Linker Flags.
Tambahkan kode integrasi.
Tambahkan file header ke file sumber tempat Anda ingin mengintegrasikan SDK.
Contoh kode:
Objective-C
// Versi Non-IDFA #import <AliTigerTally_NOIDFA/AliTigerTally.h> // Versi IDFA #import <AliTigerTally_IDFA/AliTigerTally.h>Swift
// Buat file header. #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 */Tambahkan file header yang Anda buat ke opsi Objective-C Bridging Header di Build Settings.
Tentukan ID pengguna.
Sintaks:
-(void)setAccount:(NSString*)accountDeskripsi: Menentukan ID pengguna yang ingin Anda sertakan dalam permintaan. Ini memungkinkan konfigurasi kebijakan perlindungan WAF secara lebih efisien.
Parameter: <account>, yang menentukan ID pengguna. Tipe data: NSString*. Kami sarankan untuk memasukkan ID pengguna yang dimasking.
Nilai balik: tidak ada.
Contoh kode:
Objective-C
// Dalam contoh ini, testAccount digunakan sebagai ID pengguna. // Anda tidak perlu memanggil fungsi setAccount untuk menentukan ID pengguna untuk pengguna tamu. Anda dapat langsung memanggil fungsi initialize untuk menginisialisasi SDK. [[AliTigerTally sharedInstance] setAccount:@"testAccount"];Swift
// Dalam contoh ini, testAccount digunakan sebagai ID pengguna. // Anda tidak perlu memanggil fungsi setAccount untuk menentukan ID pengguna untuk pengguna tamu. Anda dapat langsung memanggil fungsi initialize untuk menginisialisasi SDK. AliTigerTally.sharedInstance().setAccount("testAccount")
Inisialisasi SDK.
Sintaks:
-(bool)initialize:(NSString*)appKeyDeskripsi: Menginisialisasi SDK dan mengumpulkan informasi terminal. Jika Anda ingin mengumpulkan ulang informasi terminal, panggil fungsi initialize.
Parameter: <appKey>, yang menentukan kunci autentikasi SDK. Tipe data: NSString*.
Nilai balik: Nilai tipe BOOLEAN dikembalikan. Nilai valid: true dan false. Nilai true menunjukkan bahwa inisialisasi berhasil. Nilai false menunjukkan bahwa inisialisasi gagal.
Contoh kode:
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."); }
Tandatangani permintaan.
Sintaks:
-(NSString*)vmpSign:(NSData*)inputBodyDeskripsi: Menandatangani data input dan mengembalikan string tanda tangan.
Parameter: <inputBody>, yang menentukan data untuk ditandatangani. Tipe data: NSData*.
Nilai valid:
Nilai balik dalam skenario umum: String tanda tangan dikembalikan. Tipe data: NSString*.
Nilai balik dalam skenario abnormal:
Nilai balik
Deskripsi
Solusi
you must call initializeFungsi
initializebelum dipanggil.Panggil fungsi
initializeuntuk menginisialisasi SDK. Kemudian, panggil fungsivmpSign.you must input bodyData untuk ditandatangani belum ditentukan.
Saat Anda memanggil fungsi
vmpSign, konfigurasikan parameter <inputBody> untuk menentukan data untuk ditandatangani.NULLInisialisasi belum selesai dan data gagal ditandatangani.
Panggil fungsi
vmpSignlagi.
Contoh kode:
CatatanDalam contoh kode berikut, string tanda tangan didefinisikan sebagai wToken.
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" var token = AliTigerTally.sharedInstance().vmpSign(signData) NSLog(token);
Tambahkan string tanda tangan ke header protokol dan kirim permintaan ke server aplikasi iOS Anda.
String tanda tangan dikirimkan ke server dalam acara bisnis penting, seperti permintaan untuk acara logon klien. WAF menerima permintaan yang dikirim ke server, mengurai string tanda tangan wToken untuk mengidentifikasi dan memblokir permintaan jahat, kemudian meneruskan permintaan normal ke server.
Contoh kode:
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 * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if(error){ NSLog(@"Data gagal dikirim.%@", error); }else { NSLog(@"Data dikirim."); } }]; [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") let session = URLSession.shared session.dataTask(with: request) { (data, response, error) in if let data = data { do { print("OK") } catch { print("ERROR") print(error) } } }.resume() }