Panduan Integrasi iOS
iOS SDK EngageLab Behavioral Verification dirancang untuk pengembang yang ingin mengintegrasikan ke dalam pengembangan klien native iOS. SDK ini tidak bergantung pada pustaka pihak ketiga mana pun.
Gambaran Produk
| Item | Deskripsi |
|---|---|
| Fitur Utama | Generasi baru CAPTCHA yang secara cerdas mengatasi kerugian bisnis dan risiko keamanan akibat serangan otomatis dari skrip mesin. |
| Kebijakan Privasi SDK | Kebijakan |
| Panduan Kepatuhan SDK | Panduan |
| Link Unduhan SDK | (https://res.engagelab.net/docs/20251107/020242748/EngageLab-CAPTCHA-iOS-1.0.0.zip) |
Persyaratan Lingkungan
| Item | Sumber Daya |
|---|---|
| Target Pengembangan | Kompatibel dengan iOS 9+ |
| Lingkungan Pengembangan | Xcode 13.0+ |
| Ketergantungan Sistem | Webkit.framework |
| Ketergantungan Pihak Ketiga SDK | Tidak ada |
Mengimpor SDK
Jika Anda menambahkan SDK secara manual, seret file
GTCaptcha4.frameworkyang diperoleh dari hasil unduhan ke dalam proyek Anda, pastikan opsiCopy items if neededdicentang.Gunakan metode
Linked Frameworks and Librariesuntuk mengimpor framework. Setelah menyeretGTCaptcha4.frameworkke dalam proyek, pastikan file.frameworksudah ditambahkan kePROJECT -> Build Phases -> Linked Frameworks and Libraries.
SDK menyediakan format XCFramework, yang dapat ditemukan di direktori
SDK->XCFrameworkpada file unduhan sebagaiGTCaptcha4.xcframework.Untuk
Categorypada pustaka statis, tambahkan-ObjCpadaOther Linker Flagsdi bawahBuild Settingsuntuk target yang sesuai.
Anda juga perlu menyertakan
GT4Captcha4.Bundleke dalam proyek Anda; jika tidak, proses verifikasi tidak akan berjalan. SeretGTCaptcha4.Bundledari direktori SDK ke dalam proyek Anda.
Pada WWDC23, Apple mengumumkan kebijakan privasi baru untuk aplikasi (termasuk SDK), dengan sesi khusus Get started with privacy manifests - WWDC23 - Videos - Apple Developer. Pada 27 Juli, Apple merilis pembaruan bahwa mulai musim gugur 2023, jika aplikasi yang diunggah menggunakan API terkait tanpa menyediakan privacy manifest, Anda akan menerima notifikasi email. Mulai musim semi 2024, privacy manifest menjadi wajib. Untuk API yang terlibat dan alasan penggunaannya, silakan lihat: Describing use of required reason API | Apple Developer Documentation. Jika alasan penggunaan tidak tercantum, Anda dapat langsung mengajukan penjelasan penggunaan spesifik.
Untuk membuat privacy manifest baru, silakan lihat Privacy manifest files | Apple Developer Documentation.
SDK iOS Behavioral Verification menggunakan beberapa fungsi untuk mendapatkan kapasitas disk dan informasi deteksi lingkungan demi tujuan kontrol risiko, melibatkan kategori NSPrivacyAccessedAPICategoryDiskSpace dan NSPrivacyAccessedAPICategoryFileTimestamp. Hal ini dinyatakan di sini.
Antarmuka Konfigurasi
Silakan merujuk ke Proses Struktur Produk Behavioral Verification. Anda harus terlebih dahulu menyiapkan antarmuka sisi server yang sesuai di backend Anda dan mengonfigurasi
captchaIdsertaKeyyang diperoleh dari EngageLab Management Console.
Pengembang yang mengintegrasikan SDK perlu menggunakan antarmuka berikut yang disediakan oleh iOS SDK:
- Konfigurasi inisialisasi verifikasi menggunakan ID.
- Memulai proses verifikasi.
- Mendapatkan parameter hasil verifikasi dan melakukan validasi sekunder pada parameter hasil yang dikirimkan untuk mencegah pemalsuan.
- Menangani kemungkinan masalah selama proses verifikasi dengan metode error delegate.
Anda perlu mengikuti protokol <GTCaptcha4SessionTaskDelegate> untuk menangani hasil verifikasi dan kemungkinan error.
Silakan lihat Contoh Kode di bawah ini untuk kode integrasi.
Kompilasi dan Jalankan Proyek Anda
Kompilasi proyek Anda dan rasakan proses verifikasi perilaku.

Contoh Kode
Inisialisasi dan Pemanggilan Verifikasi
Impor file header dari pustaka dinamis verifikasi GTCaptcha4.framework ke dalam proyek Anda.
#import <GTCaptcha4/GTCaptcha4.h>
Sebagai contoh, integrasi dilakukan pada sebuah
UIButton.
Inisialisasi
Inisialisasi instance dari manajer verifikasi
GTCaptcha4Session. Pada metode inisialisasiUIButton, panggil metode registrasi dari instanceGTCaptcha4Sessionuntuk mendapatkan data registrasi:#define captchaID @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" @interface ViewController () <GTCaptcha4SessionTaskDelegate> @property (strong, nonatomic) IBOutlet UIButton *startBtn; @property (nonatomic, strong) GTCaptcha4Session *captchaSession; @end @implementation ViewController - (GTCaptcha4Session *)captchaSession { if (!_captchaSession) { /// Membuat instance GTCaptcha4SessionConfiguration *config = [GTCaptcha4SessionConfiguration defaultConfiguration]; // config.timeout = 8.0f; /// Atur alamat halaman perantara, wajib diisi sesuai contoh config.resourcePath = @"https://captcha-stat.engagelab.com/www/gt4-index.html"; /// Atur apiServer dan staticServer, wajib diisi sesuai contoh config.apiServers = @[@"captcha-api.engagelab.com"]; config.staticServers = @[@"captcha-stat.engagelab.com/www/js"]; /// Protokol permintaan config.protocol = @"https"; _captchaSession = [GTCaptcha4Session sessionWithCaptchaID:captchaID configuration:config]; _captchaSession.delegate = self; } return _captchaSession; } - (void)viewDidLoad { [super viewDidLoad]; // Pre-inisialisasi sesi verifikasi. Jika tidak dipanggil di sini, akan dilakukan lazy loading. [self captchaSession]; [self.startBtn addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside]; }#define captchaID @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" @interface ViewController () <GTCaptcha4SessionTaskDelegate> @property (strong, nonatomic) IBOutlet UIButton *startBtn; @property (nonatomic, strong) GTCaptcha4Session *captchaSession; @end @implementation ViewController - (GTCaptcha4Session *)captchaSession { if (!_captchaSession) { /// Membuat instance GTCaptcha4SessionConfiguration *config = [GTCaptcha4SessionConfiguration defaultConfiguration]; // config.timeout = 8.0f; /// Atur alamat halaman perantara, wajib diisi sesuai contoh config.resourcePath = @"https://captcha-stat.engagelab.com/www/gt4-index.html"; /// Atur apiServer dan staticServer, wajib diisi sesuai contoh config.apiServers = @[@"captcha-api.engagelab.com"]; config.staticServers = @[@"captcha-stat.engagelab.com/www/js"]; /// Protokol permintaan config.protocol = @"https"; _captchaSession = [GTCaptcha4Session sessionWithCaptchaID:captchaID configuration:config]; _captchaSession.delegate = self; } return _captchaSession; } - (void)viewDidLoad { [super viewDidLoad]; // Pre-inisialisasi sesi verifikasi. Jika tidak dipanggil di sini, akan dilakukan lazy loading. [self captchaSession]; [self.startBtn addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside]; }Tampilkan blok kode ini di jendela mengambangUntuk item konfigurasi opsional lainnya, silakan lihat antarmuka atau properti yang didefinisikan dalam
GTCaptcha4SessionConfiguration.Memanggil Verifikasi
Setelah inisialisasi, panggil metode berikut untuk menjalankan verifikasi:
- (void)start { [self.captchaSession verify]; }- (void)start { [self.captchaSession verify]; }Tampilkan blok kode ini di jendela mengambang
Menangani Hasil Verifikasi
Verifikasi hanya dianggap selesai setelah hasil verifikasi divalidasi. Anda perlu menangani metode delegate berikut setelah mengikuti protokol GTCaptcha4SessionTaskDelegate:
- (void)gtCaptchaSession:(GTCaptcha4Session *)captchaSession didReceive:(NSString *)code result:(NSDictionary *)result {
NSLog(@"result: %@", result);
// code bernilai @"1" jika pengguna berhasil verifikasi, @"0" jika gagal
if ([@"1" isEqualToString:code]) {
if (result && result.count > 0) {
// Konversi dictionary ke format form untuk dikirim (susun sesuai kebutuhan format data antarmuka aktual)
__block NSMutableArray<NSString *> *kvPairs = [NSMutableArray array];
[result enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
if ([key isKindOfClass:[NSString class]] &&
[obj isKindOfClass:[NSString class]]) {
NSString *kvPair = [NSString stringWithFormat:@"%@=%@", key, obj];
[kvPairs addObject:kvPair];
}
}];
NSString *formStr = [kvPairs componentsJoinedByString:@"&"];
NSData *data = [formStr dataUsingEncoding:NSUTF8StringEncoding];
// Antarmuka verifikasi backend yang disediakan bisnis
NSURL *url = [NSURL URLWithString:@"https://***/validate"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = data;
// Kirim ke backend untuk validasi hasil
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (!error && data) {
// Tangani hasil verifikasi
NSString *msg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"result: %@", msg);
}
else {
NSLog(@"error: %@", error);
}
}] resume];
}
}
}
Menangani Error Verifikasi
Error tak terduga dapat terjadi selama proses verifikasi. Anda dapat menanganinya pada metode delegate berikut setelah mengikuti protokol GTCaptcha4SessionTaskDelegate:
- (void)gtCaptchaSession:(GTCaptcha4Session *)captchaSession didReceiveError:(GTC4Error *)error {
// Tampilkan informasi error dan kode error kepada pengguna
// Catat detail error
NSLog(@"error: %@", error.description);
}
Sangat disarankan untuk menampilkan alasan error dan kode error kepada pengguna saat terjadi error verifikasi, agar memudahkan penelusuran masalah secara online.
Contoh Swift
Untuk contoh kode yang lebih lengkap, silakan lihat Demo resmi yang disediakan. Untuk contoh kode Swift, silakan lihat file DefaultDemoViewController.swift pada source code Demo.










