Как мы можем интегрировать Captcha в приложение iOS?

Я googled для интеграции Captcha в приложении iOS, но не нашел подходящего способа сделать это. Даже я зарегистрирую reCAPTCHA и искал, доступны ли плагины для Captcha для iOS или нет? Я не нашел плагина для iOS. Где-то в то время как RND я узнал, что "он не нужен для мобильных приложений", но клиент хочет Captcha в своем приложении, поэтому я хочу знать: -

  • Можно ли интегрировать Captcha в приложения iOS App/Mobile Apps: -

    • Если да?: Тогда какой был бы соответствующий способ его интеграции.

    • Если нет?: Тогда какая уместная причина.

Ответ 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:" и попросите пользователя ввести текст в текстовое поле ввода номера.

Ответ 2

Насколько я знаю, механизмы CAPTCHA используются для предотвращения регистрации ботов или использования/спама на некоторых сервисах или веб-сайтах. Используя CAPTCHA, вы убедитесь, что пользователь - настоящий человек, а не бот.

Собственное приложение - это не то же самое, что и веб-сайт, и я не слышал о каких-либо ботах, которые выполняют эквивалентную работу с родными приложениями. Поэтому вы могли бы (возможно, должны) предположить, что все пользователи ваших приложений действительно являются настоящими людьми, что делает ненужными системы CAPTCHA.

Ответ 3

Для меня я использую следующую библиотеку:

https://github.com/fjcaetano/ReCaptcha

он будет использовать скрытый веб-просмотр для обработки этого

Ответ 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