Seiring dengan semakin matangnya teknologi aplikasi seluler hibrida (Hybrid App), Anda dapat menggunakan komponen WKWebView dalam aplikasi untuk mengintegrasikan Alibaba Cloud Captcha 2.0 secara langsung ke layanan HTML5 seluler. Ini memberikan verifikasi manusia dan mesin untuk aplikasi Anda. Topik ini menjelaskan cara mengintegrasikan Captcha 2.0 ke dalam aplikasi iOS menggunakan Swift.
Informasi latar belakang
Versi mobile HTML5 dari Captcha V2.0 menawarkan manfaat seperti iterasi cepat dan kompatibilitas tinggi. Dengan mengintegrasikan layanan Captcha V2.0 ke dalam aplikasi Anda, Anda dapat menghindari masalah kompatibilitas yang disebabkan oleh dependensi atau referensi pada komponen aplikasi asli. Iterasi cepat dari mobile HTML5 Captcha V2.0 juga membantu aplikasi Anda lebih responsif terhadap skenario yang menantang.
Ikhtisar integrasi
Jika arsitektur layanan Anda adalah V2, lihat Integrasi dengan Arsitektur V2 di iOS.
Mengintegrasikan Captcha 2.0 untuk aplikasi HTML5 ke dalam aplikasi iOS melibatkan langkah-langkah berikut:
Klien Layanan HTML5: Integrasikan Captcha 2.0 ke dalam klien layanan HTML5 dan mulai verifikasi.
Server untuk Layanan HTML5: Integrasikan SDK Captcha 2.0 di server dan panggil operasi API
VerifyIntelligentCaptchauntuk memulai verifikasi tanda tangan untuk layanan Anda.Aplikasi iOS: Gunakan komponen WKWebView untuk mengaktifkan dan menerapkan halaman layanan yang memerlukan integrasi Captcha 2.0 di aplikasi Anda.
Prasyarat
Layanan Captcha 2.0 Alibaba Cloud telah diaktifkan.
Skenario Verifikasi telah dibuat. Integration Method diatur ke Webview+H5 (Supports Apps And WeChat Mini Programs).
Gunakan iOS 10.0 atau yang lebih baru.
Prosedur
Langkah 1: Integrasikan Alibaba Cloud Captcha 2.0 ke dalam klien layanan HTML5
Dalam kode klien layanan HTML5, integrasikan kode integrasi sisi klien yang disediakan oleh Captcha 2.0. Untuk informasi lebih lanjut tentang cara mengintegrasikan klien layanan HTML5, lihat Integrasi dengan Arsitektur V3 untuk Klien Web dan H5.
CatatanJika arsitektur layanan Anda adalah V2, lihat Integrasi dengan Arsitektur V2 untuk Klien Web dan H5.
Dalam fungsi callback sukses, tambahkan fungsi JavaScript yang sesuai. Dalam fungsi ini, panggil metode yang dikonfigurasikan di Langkah 3 dan Langkah 4. Metode ini menggunakan protokol WkScriptMessageHandler untuk mengaktifkan interaksi antara JavaScript dan WKWebView serta mendapatkan parameter verifikasi tanda tangan. Setelah Anda mendapatkan parameter, Anda dapat mengirim permintaan layanan atau verifikasi tanda tangan dari aplikasi iOS dan memproses hasil verifikasi.
// fungsi callback sukses function success(captchaVerifyParam) { // Panggil metode JavaScript yang diimplementasikan oleh protokol WkScriptMessageHandler untuk mendapatkan parameter verifikasi tanda tangan. window.webkit && window.webkit.messageHandlers.getCaptchaVerifyParam.postMessage(captchaVerifyParam) }
Data yang dikembalikan
Selama verifikasi perilaku untuk klien arsitektur V3 yang terhubung ke Captcha 2.0, server Captcha memverifikasi jawaban dan menentukan apakah permintaan berasal dari mesin. Server kemudian mengembalikan kode Captcha dan parameter lainnya ke klien Anda. Anda dapat melihat data yang dikembalikan menggunakan fitur Jaringan di browser Anda. Untuk informasi lebih lanjut, lihat Data yang Dikembalikan untuk Klien Arsitektur V3.

Langkah 2: Integrasikan Alibaba Cloud Captcha 2.0 di server untuk halaman HTML5
Di server untuk halaman layanan HTML5, integrasikan SDK sisi server yang disediakan oleh Captcha 2.0. Kemudian, panggil operasi API VerifyIntelligentCaptcha untuk memulai verifikasi tanda tangan untuk layanan Anda. Untuk informasi lebih lanjut, lihat Integrasi Sisi Server.
Langkah 3: Aktifkan dan terapkan halaman layanan di aplikasi iOS
Swift
Dalam file
Controller.swiftproyek aplikasi iOS Anda, impor dependensi yang diperlukan.import WebKitDalam file
Controller.swiftproyek aplikasi iOS Anda, muat halaman layanan HTML5.override func viewDidLoad() { super.viewDidLoad() view.addSubview(webView) let url = URL(string: "http://x.x.x.x/demo/") let request = URLRequest(url: url!); webView.load(request); // Muat halaman. }Atur objek WKWebView. Gunakan protokol WKScriptMessageHandler untuk mengaktifkan interaksi antara JavaScript dan WKWebView.
lazy var webView: WKWebView = { // Konfigurasikan penskalaan halaman adaptif. let javascript = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta)"; let configuration = WKWebViewConfiguration(); let userScript = WKUserScript(source: javascript, injectionTime: .atDocumentEnd, forMainFrameOnly: true); let usercontroller = WKUserContentController(); usercontroller.addUserScript(userScript); configuration.userContentController = usercontroller; // Tambahkan metode untuk memanggil JavaScript dari halaman HTML. Anda dapat mengubah nama metode sesuai kebutuhan. configuration.userContentController.add(self, name: "getCaptchaVerifyParam"); // Konfigurasikan WKWebView. let webView = WKWebView(frame: self.view.frame, configuration: configuration); webView.navigationDelegate = self; return webView; }()Atur metode yang sesuai untuk protokol WKScriptMessageHandler. Gunakan metode ini untuk mendapatkan nilai kembali dari Captcha 2.0, proses dengan logika layanan Anda, dan kembalikan hasil verifikasi ke API kustom.
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { if(messsage.name == "getCaptchaVerifyParam"){ // Setelah Anda mendapatkan parameter verifikasi tanda tangan, Anda dapat mengirim permintaan layanan atau verifikasi tanda tangan dan memproses hasilnya. print(message.body) } }
Objective-C
Dalam file
ViewController.mproyek aplikasi iOS Anda, impor dependensi yang diperlukan.#import "ViewController.h" #import <WebKit/WebKit.h> @interface ViewController ()<WKScriptMessageHandler> @property(nonatomic,strong)WKWebView *webView; @endDalam file
ViewController.mproyek aplikasi iOS Anda, muat halaman layanan HTML5.- (void)viewDidLoad { [super viewDidLoad]; [self.view addSubview:self.webView]; self.webView.scrollView.backgroundColor = [UIColor redColor]; [self loadLocalHtmlForJs]; } - (void)loadLocalHtmlForJs{ NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]; NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]; [self.webView loadRequest:req]; }Atur objek WKWebView. Gunakan protokol WKScriptMessageHandler untuk mengaktifkan interaksi antara JavaScript dan WKWebView.
- (WKWebView *)webView{ if (!_webView) { // Konfigurasikan penskalaan halaman adaptif. NSString *jscript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta)"; WKUserScript *userScript = [[WKUserScript alloc] initWithSource:jscript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES]; WKUserContentController *userContentController = [[WKUserContentController alloc] init]; [userContentController addUserScript:userScript]; // Tambahkan metode untuk memanggil JavaScript dari halaman HTML. Nama metode harus sama dengan yang dipanggil dalam fungsi callback sukses halaman HTML. [userContentController addScriptMessageHandler:self name:@"getCaptchaVerifyParam"]; // Konfigurasikan WKWebView. WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; configuration.userContentController = userContentController; // Tampilkan WKWebView. WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration]; webView.backgroundColor = [UIColor blackColor]; // Aktifkan mode debug (Opsional). [webView.configuration.preferences setValue:@YES forKey:@"developerExtrasEnabled"]; webView.inspectable = YES; _webView = webView; } return _webView; }Atur metode yang sesuai untuk protokol WKScriptMessageHandler. Gunakan metode ini untuk mendapatkan nilai kembali dari Captcha 2.0, proses dengan logika layanan Anda, dan kembalikan hasil verifikasi ke API kustom.
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { // Dapatkan nilai kembali dari layanan Captcha dengan memanggil metode yang sesuai dari JavaScript halaman HTML. Nama metode harus sama dengan yang ditambahkan untuk pemanggilan JavaScript. if([message.name isEqualToString:@"getCaptchaVerifyParam"]){ // Setelah Anda mendapatkan parameter verifikasi tanda tangan, Anda dapat mengirim permintaan layanan atau verifikasi tanda tangan dan memproses hasilnya. NSLog(@"Parameter verifikasi tanda tangan untuk Captcha: %@", message.body); // Anda dapat menambahkan logika layanan Anda di sini. Contohnya: // 1. Kirim parameter verifikasi tanda tangan ke server Anda untuk diverifikasi. // 2. Proses alur bisnis berikutnya berdasarkan hasil verifikasi. // Contoh: Kirim parameter verifikasi tanda tangan ke server. [self sendCaptchaVerifyParamToServer:message.body]; } }
Unduhan demo arsitektur V3 iOS
Swift: Demo Integrasi Aplikasi Swift.
Objective-C: Demo Integrasi Aplikasi Objective-C.