คู่มือการรวม iOS
EngageLab Behavioral Verification 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ในOther Linker Flagsภายใต้Build Settingsสำหรับเป้าหมายที่เกี่ยวข้อง
คุณยังต้องรวม
GT4Captcha4.Bundleในโปรเจกต์ของคุณด้วย มิฉะนั้นการยืนยันจะไม่ทำงาน ให้ลากGTCaptcha4.Bundleจากไดเรกทอรี SDK เข้ามาในโปรเจกต์ของคุณ
ในงาน WWDC23 Apple ได้ประกาศนโยบายความเป็นส่วนตัวใหม่สำหรับแอปพลิเคชัน (รวมถึง SDK) โดยมีเซสชันเฉพาะ เริ่มต้นใช้งาน privacy manifests - WWDC23 - วิดีโอ - Apple Developer เมื่อวันที่ 27 กรกฎาคม Apple ได้เผยแพร่ข่าวสารอัปเดตว่าตั้งแต่ฤดูใบไม้ร่วงปี 2023 หากแอปพลิเคชันที่อัปโหลดใหม่ใช้ API ที่เกี่ยวข้องโดยไม่ได้ให้ privacy manifest คุณจะได้รับการแจ้งเตือนทางอีเมล ตั้งแต่ฤดูใบไม้ผลิปี 2024 privacy manifests จะกลายเป็นข้อบังคับ สำหรับ API ที่เกี่ยวข้องและเหตุผลการใช้งาน โปรดดูที่: Describing use of required reason API | Apple Developer Documentation หากเหตุผลการใช้งานไม่ได้ระบุไว้ คุณสามารถส่งคำอธิบายการใช้งานเฉพาะได้โดยตรง
ในการสร้าง privacy manifest ใหม่ โปรดดูที่ Privacy manifest files | Apple Developer Documentation
Behavioral Verification iOS SDK ใช้ฟังก์ชันบางอย่างเพื่อรับข้อมูลความจุของดิสก์และการตรวจจับสภาพแวดล้อมเพื่อวัตถุประสงค์ในการควบคุมความเสี่ยง โดยเกี่ยวข้องกับหมวดหมู่ NSPrivacyAccessedAPICategoryDiskSpace และ NSPrivacyAccessedAPICategoryFileTimestamp ซึ่งได้ระบุไว้ในที่นี้
อินเทอร์เฟซการกำหนดค่า
อ้างอิงถึง กระบวนการโครงสร้างผลิตภัณฑ์ ของ Behavioral Verification คุณต้องตั้งค่า อินเทอร์เฟซฝั่งเซิร์ฟเวอร์ ที่เกี่ยวข้องบนแบ็กเอนด์ของคุณก่อน และกำหนดค่า
captchaIdและKeyที่ได้รับจาก EngageLab Management Console
นักพัฒนาที่รวม SDK เข้าด้วยกันต้องใช้อินเทอร์เฟซต่อไปนี้ที่จัดเตรียมโดย iOS SDK:
- กำหนดค่าการเริ่มต้นการยืนยันโดยใช้ ID
- เริ่มการยืนยัน
- รับพารามิเตอร์ผลลัพธ์การยืนยันและทำการตรวจสอบความถูกต้องระดับที่สองบนพารามิเตอร์ผลลัพธ์ที่ส่งมาเพื่อป้องกันการปลอมแปลง
- จัดการปัญหาที่อาจเกิดขึ้นระหว่างการยืนยันโดยใช้วิธีการ delegate ข้อผิดพลาด
คุณต้องปฏิบัติตามโปรโตคอล <GTCaptcha4SessionTaskDelegate> เพื่อจัดการผลลัพธ์การยืนยันและข้อผิดพลาดที่อาจเกิดขึ้น
อ้างอิงถึง ตัวอย่างโค้ด ด้านล่างสำหรับโค้ดการรวม
คอมไพล์และรันโปรเจกต์ของคุณ
คอมไพล์โปรเจกต์ของคุณและสัมผัสประสบการณ์การยืนยันพฤติกรรม

ตัวอย่างโค้ด
การเริ่มต้นและการเรียกการยืนยัน
นำเข้าไฟล์เฮดเดอร์ของไลบรารียืนยันแบบไดนามิก 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]; }โค้ดนี้โชว์เป็นหน้าต่างลอย
การจัดการผลลัพธ์การยืนยัน
การยืนยันจะเสร็จสมบูรณ์หลังจากตรวจสอบผลลัพธ์การยืนยันแล้วเท่านั้น คุณต้องจัดการวิธีการ delegate ต่อไปนี้หลังจากปฏิบัติตามโปรโตคอล GTCaptcha4SessionTaskDelegate:
- (void)gtCaptchaSession:(GTCaptcha4Session *)captchaSession didReceive:(NSString *)code result:(NSDictionary *)result {
NSLog(@"result: %@", result);
// code คือ @"1" หากผู้ใช้ทำการยืนยันเสร็จสมบูรณ์, @"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://captcha-api.engagelab.com/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];
}
}
}
การจัดการข้อผิดพลาดในการยืนยัน
อาจเกิดข้อผิดพลาดที่ไม่คาดคิดระหว่างการยืนยัน คุณสามารถจัดการข้อผิดพลาดเหล่านี้ในวิธีการ delegate ต่อไปนี้หลังจากปฏิบัติตามโปรโตคอล GTCaptcha4SessionTaskDelegate:
- (void)gtCaptchaSession:(GTCaptcha4Session *)captchaSession didReceiveError:(GTC4Error *)error {
// แสดงข้อมูลข้อผิดพลาดและรหัสข้อผิดพลาดแก่ผู้ใช้
// บันทึกรายละเอียดข้อผิดพลาด
NSLog(@"error: %@", error.description);
}
ขอแนะนำอย่างยิ่งให้แสดงทั้งเหตุผลข้อผิดพลาดและรหัสข้อผิดพลาดแก่ผู้ใช้เมื่อแสดงข้อผิดพลาดการยืนยัน เพื่ออำนวยความสะดวกในการแก้ไขปัญหาออนไลน์
ตัวอย่าง Swift
สำหรับโค้ดตัวอย่างที่ละเอียดมากขึ้น โปรดดูที่ Demo อย่างเป็นทางการที่จัดเตรียมไว้ สำหรับโค้ดตัวอย่าง Swift โปรดดูที่ไฟล์ DefaultDemoViewController.swift ในซอร์สโค้ด Demo









