คู่มือการผสานรวม iOS
EngageLab Behavioral CAPTCHA iOS SDK ได้รับการออกแบบมาสำหรับนักพัฒนาที่ผสานรวมกับการพัฒนาไคลเอนต์ iOS แบบเนทีฟ SDK นี้ไม่พึ่งพาไลบรารีของบุคคลที่สามใดๆ
ภาพรวมผลิตภัณฑ์
| รายการ | คำอธิบาย |
|---|---|
| คุณสมบัติหลัก | CAPTCHA รุ่นใหม่ที่จัดการกับการสูญเสียทางธุรกิจและความเสี่ยงด้านความปลอดภัยที่เกิดจากการโจมตีอัตโนมัติจากสคริปต์เครื่องจักรอย่างชาญฉลาด |
| นโยบายความเป็นส่วนตัวของ SDK | นโยบาย |
| คู่มือการปฏิบัติตามข้อกำหนดของ SDK | คู่มือ |
| ลิงก์ดาวน์โหลด SDK | ดาวน์โหลด |
ข้อกำหนดด้านสภาพแวดล้อม
| รายการ | ทรัพยากร |
|---|---|
| เป้าหมายการพัฒนา | เข้ากันได้กับ iOS 9+ |
| สภาพแวดล้อมการพัฒนา | Xcode 13.0+ |
| การพึ่งพาระบบ | Webkit.framework |
| การพึ่งพาบุคคลที่สามของ SDK | ไม่มี |
การนำเข้า SDK
หากคุณเพิ่ม SDK ด้วยตนเอง ให้ลากและวางไฟล์
GTCaptcha4.frameworkที่ดาวน์โหลดลงในโปรเจ็กต์ของคุณ โดยตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายCopy items if neededแล้วใช้วิธี
Linked Frameworks and Librariesเพื่อนำเข้าเฟรมเวิร์ก หลังจากลากGTCaptcha4.frameworkลงในโปรเจ็กต์ ให้ตรวจสอบให้แน่ใจว่าไฟล์.frameworkถูกเพิ่มไปที่PROJECT -> Build Phases -> Linked Frameworks and Libraries
SDK มีรูปแบบ XCFramework ซึ่งอยู่ในไดเรกทอรี
SDK->XCFrameworkของไฟล์ที่ดาวน์โหลดในชื่อGTCaptcha4.xcframeworkสำหรับ
Categoryในไลบรารีแบบสแตติก ให้เพิ่ม-ObjCในBuild Settings->Other Linker Flagsสำหรับเป้าหมายที่เกี่ยวข้อง
คุณต้องรวม
GT4Captcha4.Bundleในโปรเจ็กต์ของคุณ มิฉะนั้นการตรวจสอบจะไม่ทำงาน ลากGTCaptcha4.Bundleจากเส้นทาง SDK ลงในโปรเจ็กต์ของคุณ
ที่ WWDC23 Apple ได้ประกาศนโยบายความเป็นส่วนตัวใหม่สำหรับแอปพลิเคชัน (รวมถึง SDK) พร้อมหัวข้อเฉพาะ เริ่มต้นด้วย privacy manifests - WWDC23 - Videos - Apple Developer เมื่อวันที่ 27 กรกฎาคม Apple ได้เผยแพร่ข่าวอัปเดตโดยระบุว่าเริ่มตั้งแต่ฤดูใบไม้ร่วงปี 2023 หากแอปพลิเคชันที่อัปโหลดใหม่ใช้ API โดยไม่ได้ให้ privacy manifests คุณจะได้รับการแจ้งเตือนทางอีเมล ตั้งแต่ฤดูใบไม้ผลิปี 2024 privacy manifests จะกลายเป็นข้อบังคับ อ้างอิงถึง API ที่เกี่ยวข้องและเหตุผลการใช้งานได้ที่นี่: Describing use of required reason API | Apple Developer Documentation หากเหตุผลการใช้งานไม่ได้ระบุไว้ คุณสามารถส่งคำชี้แจงการใช้งานเฉพาะได้โดยตรง สำหรับคำแนะนำในการสร้าง privacy manifest ใหม่ โปรดดูที่ Privacy manifest files | Apple Developer Documentation
Behavioral CAPTCHA iOS SDK ใช้ฟังก์ชันบางอย่างเหล่านี้เพื่อรับข้อมูลความจุของดิสก์และการตรวจจับสภาพแวดล้อมเพื่อวัตถุประสงค์ในการควบคุมความเสี่ยง ซึ่งเกี่ยวข้องกับหมวดหมู่ NSPrivacyAccessedAPICategoryDiskSpace และ NSPrivacyAccessedAPICategoryFileTimestamp ซึ่งอธิบายไว้ที่นี่
การกำหนดค่าอินเทอร์เฟซ
อ้างอิงถึง โครงสร้างผลิตภัณฑ์ ของ Behavioral CAPTCHA คุณต้องตั้งค่า อินเทอร์เฟซฝั่งเซิร์ฟเวอร์ ที่เกี่ยวข้องในแบ็กเอนด์ของคุณและกำหนดค่า
captchaIdและKeyที่ได้รับจาก EngageLab Management Console
ผู้ใช้ที่ผสานรวมต้องใช้ iOS SDK เพื่อดำเนินการอินเทอร์เฟซที่ให้ไว้ดังต่อไปนี้:
- กำหนดค่าเริ่มต้นการตรวจสอบโดยใช้ ID
- เริ่มการตรวจสอบ
- รับพารามิเตอร์ผลลัพธ์การตรวจสอบและดำเนินการตรวจสอบความถูกต้องทุติยภูมิในพารามิเตอร์ผลลัพธ์ที่ส่งเพื่อป้องกันการปลอมแปลง
- จัดการปัญหาที่อาจเกิดขึ้นระหว่างการตรวจสอบโดยใช้วิธีการมอบหมายข้อผิดพลาด
คุณต้องปฏิบัติตามโปรโตคอล <GTCaptcha4SessionTaskDelegate> เพื่อจัดการผลลัพธ์การตรวจสอบและข้อผิดพลาดที่อาจเกิดขึ้น
อ้างอิงถึง ตัวอย่างโค้ด ด้านล่างสำหรับโค้ดการผสานรวม
คอมไพล์และรันโปรเจ็กต์ของคุณ
คอมไพล์โปรเจ็กต์ของคุณและสัมผัสประสบการณ์ Behavioral CAPTCHA

ตัวอย่างโค้ด
การเริ่มต้นและการเรียกการตรวจสอบ
นำเข้าไฟล์ส่วนหัวของไลบรารีแบบไดนามิก GTCaptcha4.framework ในโปรเจ็กต์ของคุณ
#import <GTCaptcha4/GTCaptcha4.h>
อ้างอิงถึงการผสานรวมใน
UIButton
การเริ่มต้น
เริ่มต้นอินสแตนซ์ตัวจัดการการตรวจสอบ
GTCaptcha4Sessionในวิธีการเริ่มต้นUIButtonให้เรียกใช้เมธอดการลงทะเบียนของอินสแตนซ์GTCaptcha4Sessionเพื่อรับข้อมูลการลงทะเบียน:#define captchaID @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" @interface ViewController () <GTCaptcha4SessionTaskDelegate> @property (strong, nonatomic) IBOutlet UIButton *startBtn; @property (nonatomic, strong) GTCaptcha4Session *captchaSession; @end @implementation ViewController - (GTCaptcha4Session *)captchaSession { if (!_captchaSession) { /// สร้างอินสแตนซ์ GTCaptcha4SessionConfiguration *config = [GTCaptcha4SessionConfiguration defaultConfiguration]; // config.timeout = 8.0f; /// ตั้งค่าที่อยู่หน้ากลาง ต้องตั้งค่าตามตัวอย่าง config.resourcePath = @"https://captcha-stat.engagelab.com/www/gt4-index.html"; /// ตั้งค่า apiServer และ staticServer ต้องตั้งค่าตามตัวอย่าง config.apiServers = @[@"captcha-api.engagelab.com"]; config.staticServers = @[@"captcha-stat.engagelab.com/www/js"]; /// โปรโตคอลการร้องขอ config.protocol = @"https"; _captchaSession = [GTCaptcha4Session sessionWithCaptchaID:captchaID configuration:config]; _captchaSession.delegate = self; } return _captchaSession; } - (void)viewDidLoad { [super viewDidLoad]; // เริ่มต้นเซสชันการตรวจสอบล่วงหน้า หากไม่ได้เรียกที่นี่ จะใช้โหมดการโหลดแบบ Lazy [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) { /// สร้างอินสแตนซ์ GTCaptcha4SessionConfiguration *config = [GTCaptcha4SessionConfiguration defaultConfiguration]; // config.timeout = 8.0f; /// ตั้งค่าที่อยู่หน้ากลาง ต้องตั้งค่าตามตัวอย่าง config.resourcePath = @"https://captcha-stat.engagelab.com/www/gt4-index.html"; /// ตั้งค่า apiServer และ staticServer ต้องตั้งค่าตามตัวอย่าง config.apiServers = @[@"captcha-api.engagelab.com"]; config.staticServers = @[@"captcha-stat.engagelab.com/www/js"]; /// โปรโตคอลการร้องขอ config.protocol = @"https"; _captchaSession = [GTCaptcha4Session sessionWithCaptchaID:captchaID configuration:config]; _captchaSession.delegate = self; } return _captchaSession; } - (void)viewDidLoad { [super viewDidLoad]; // เริ่มต้นเซสชันการตรวจสอบล่วงหน้า หากไม่ได้เรียกที่นี่ จะใช้โหมดการโหลดแบบ Lazy [self captchaSession]; [self.startBtn addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside]; }โค้ดนี้โชว์เป็นหน้าต่างลอยสำหรับรายการการกำหนดค่าเพิ่มเติม ดูอินเทอร์เฟซหรือคุณสมบัติที่กำหนดใน
GTCaptcha4SessionConfigurationการเรียกการตรวจสอบ
หลังจากการเริ่มต้น ให้เรียกใช้เมธอดต่อไปนี้เพื่อการตรวจสอบ:
- (void)start { [self.captchaSession verify]; }- (void)start { [self.captchaSession verify]; }โค้ดนี้โชว์เป็นหน้าต่างลอย
การจัดการผลลัพธ์การตรวจสอบ
การตรวจสอบจะเสร็จสมบูรณ์หลังจากผลลัพธ์การตรวจสอบได้รับการยืนยันเท่านั้น หลังจากปฏิบัติตามโปรโตคอล GTCaptcha4SessionTaskDelegate ให้จัดการเมธอดมอบหมายดังต่อไปนี้:
- (void)gtCaptchaSession:(GTCaptcha4Session *)captchaSession didReceive:(NSString *)code result:(NSDictionary *)result {
NSLog(@"result: %@", result);
// หาก code เป็น @"1" แสดงว่าผู้ใช้ได้ทำการตรวจสอบเสร็จสิ้น; หาก code เป็น @"0" แสดงว่าการตรวจสอบของผู้ใช้ล้มเหลว
if ([@"1" isEqualToString:code]) {
if (result && result.count > 0) {
// แปลงพจนานุกรมเป็นรูปแบบฟอร์มสำหรับการส่ง (สร้างตามข้อกำหนดรูปแบบข้อมูลอินเทอร์เฟซจริง)
__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];
// อินเทอร์เฟซการตรวจสอบความถูกต้องที่จัดทำโดยแบ็กเอนด์ของนักพัฒนา
NSURL *url = [NSURL URLWithString:@"https://***/validate"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = data;
// ส่งไปยังแบ็กเอนด์เพื่อการตรวจสอบผลลัพธ์
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (!error && data) {
// จัดการผลลัพธ์การตรวจสอบ
NSString *msg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"result: %@", msg);
}
else {
NSLog(@"error: %@", error);
}
}] resume];
}
}
}
การจัดการข้อผิดพลาดในการตรวจสอบ
อาจเกิดข้อผิดพลาดที่ไม่คาดคิดระหว่างการตรวจสอบ หลังจากปฏิบัติตามโปรโตคอล GTCaptcha4SessionTaskDelegate ให้จัดการเมธอดมอบหมายดังต่อไปนี้:
- (void)gtCaptchaSession:(GTCaptcha4Session *)captchaSession didReceiveError:(GTC4Error *)error {
// แสดงข้อมูลข้อผิดพลาดและรหัสข้อผิดพลาดให้กับผู้ใช้
// บันทึกรายละเอียดข้อผิดพลาดในบันทึก
NSLog(@"error: %@", error.description);
}
ขอแนะนำอย่างยิ่งให้แสดงเหตุผลข้อผิดพลาดและรหัสข้อผิดพลาดให้กับผู้ใช้เพื่ออำนวยความสะดวกในการแก้ไขปัญหาออนไลน์
ตัวอย่าง Swift
สำหรับโค้ดตัวอย่างที่ละเอียดมากขึ้น โปรดดู Demo อย่างเป็นทางการ สำหรับโค้ดตัวอย่าง Swift โปรดดูไฟล์ DefaultDemoViewController.swift ในซอร์สโค้ด Demo










