Ответ 1
Хотя у нас нет какого-либо API для Captcha в iOS, даже reCaptcha не предоставил никакого плагина для iOS. И даже многие люди предложили мне, что нет необходимости внедрять капчу для мобильных приложений. Я согласился, но поскольку клиент не смог выслушать какие-либо оправдания, что я сделал,
-
просто я создал случайное число, используя
-(NSInteger)randomIntBetween:(NSInteger)min and:(NSInteger)max
{
return (NSInteger)(min + arc4random_uniform(max + 1 - min));
}
поместил это число на ярлык и попросил пользователя ввести тот же номер в предоставленном текстовом поле, если совпадение найдено, завершен основной код [Пользователь на другом конце - это единственный человек, который интегрирует капчу) Другой мудрый я регенерирую случайное число и поместил его там снова на этикетке, запрашивая у пользователя ввести тот же номер в предоставленном текстовом поле.
Итоговый результат будет таким.
![It Will Look Something Like This]()
Теперь идея может быть более понятной для вас. Просто назначьте вывод функции "randomIntBetween" на метку, на которой отображается номер, и когда пользователь нажмет кнопку входа в систему, аутентифицирует, будет ли текст в текстовом поле (textField) Именованный: введите номер) соответствует совпадению с меткой слева от него, если он соответствует, позволяет пользователю войти в систему, если нет, затем очистить текст текстового поля, а также текст на ярлыке, а затем назначить новое случайное число этикетке слева вызовом метод "randomIntBetween:" и попросите пользователя ввести текст в текстовое поле ввода номера.
Ответ 4
Хотя нет необходимости добавлять Captcha в какое-то приложение, поскольку приложения не похожи на Web, поэтому, по моему мнению, нет необходимости присоединять Captcha в каком-либо приложении для предотвращения ботов, тем не менее, если вам нужно встроить его...
Да, вот возможный способ. Пожалуйста, проверьте следующие коды:
Возьмите эти выходы и переменные:
NSArray *arrCapElements;
IBOutlet UILabel *Captcha_label;
IBOutlet UITextField *Captcha_field;
IBOutlet UILabel *Status_label;
и IBActions
как:
- (IBAction)Reload_Action:(id)sender;
- (IBAction)Submit_Action:(id)sender;
В раскадровке выберите имя шрифта как Chalkduster 30.0 для Captcha_label
.
Теперь назначьте arrCapElements
в viewDidLoad()
как
arrCapElements = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",@"i",@"j",@"k",@"l",@"m",@"n",@"o",@"p",@"q",@"r",@"s",@"t",@"u",@"v",@"w",@"x",@"y",@"z",@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z", nil];
Код для загрузки Captcha:
-(void)load_captcha{
@try {
CGFloat hue = ( arc4random() % 256 / 256.0 ); // 0.0 to 1.0
CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5; // 0.5 to 1.0, away from white
CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5; // 0.5 to 1.0, away from black
Captcha_label.backgroundColor = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
//Captcha_label.textColor=[UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
NSUInteger elmt1,elmt2,elmt3,elmt4,elmt5,elmt6;
elmt1 = arc4random() % [arrCapElements count];
elmt2= arc4random() % [arrCapElements count];
elmt3 = arc4random() % [arrCapElements count];
elmt4 = arc4random() % [arrCapElements count];
elmt5 = arc4random() % [arrCapElements count];
elmt6 = arc4random() % [arrCapElements count];
NSString *Captcha_string = [NSString stringWithFormat:@"%@%@%@%@%@%@",arrCapElements[elmt1-1],arrCapElements[elmt2-1],arrCapElements[elmt3-1],arrCapElements[elmt4-1],arrCapElements[elmt5-1],arrCapElements[elmt6-1]];
//NSLog(@" Captcha String : %@",Captcha_string);
Captcha_label.text = Captcha_string;
}
@catch (NSException *exception) {
NSLog(@"%@",exception);
}
}
Обновить действие:
- (IBAction)Reload_Action:(id)sender {
[self load_captcha];
}
Проверьте капчу Правильно или нет:
- (IBAction)Submit_Action:(id)sender {
NSLog(@"%@ = %@",Captcha_label.text,Captcha_field.text);
if([Captcha_label.text isEqualToString: Captcha_field.text]){
[self.view endEditing:YES];
Status_label.text [email protected]"Success";
Status_label.textColor = [UIColor greenColor];
}else{
Status_label.text [email protected]"Faild";
Status_label.textColor = [UIColor redColor];
}
}
Он будет показан следующим образом:
![Демо-экран]()
Справка взята из: Captcha Generator для iOS