How could we integrate the Captcha in iOS application?

百般思念 提交于 2019-12-18 12:26:06

问题


I googled for integration of Captcha in iOS app but do not found any relevant way to do so. Even i sign up with reCAPTCHA and searched whether the plugins for Captcha are available for iOS or not? I didn't found any plugin for iOS there. Somewhere while RND i come to know that "its not needed for the mobile apps" , But the client wants the Captcha in his application so ,I want to know :-

  • Whether we can integrate the Captcha in iOS App/Mobile Apps :-

    1. If Yes? : Then what would be the relevant way to integrate it.

    2. If No? : Then what is the relevant reason .


回答1:


For my I use the following library:

https://github.com/fjcaetano/ReCaptcha

it will use a hidden webview to handle that




回答2:


Though we do not have any of the API for Captcha in iOS , not even the reCaptcha has provided any plugin for iOS . And even lot of peoples suggested me that there is no need to implement the captcha for mobile applications. I agreed, but as the client was not be able to listen any excuses what i have done is,

  1. simply i created the Random number using

    -(NSInteger)randomIntBetween:(NSInteger)min and:(NSInteger)max { return (NSInteger)(min + arc4random_uniform(max + 1 - min)); }

    placed that number on label and asked user to enter the same number in in provided textField, If the match is found the captcha's principal is done [The user on the other end is human being is the only principal to integrate captcha], Other wise i regenerate the random number and place it there again on the label asking user to enter same number in provided textField.
    Final Result will be like this.

Now the idea might be more clear to you, Simply assign the output of the function "randomIntBetween" to the label on which the number is displayed, and when the user will press the login button authenticate whether the text in the textField(Named: Enter number) is matches with the label on its left, if it matches allow the user to login if not then clear then text of text field and also the text on label then assign the new random number to the label on left by calling the method "randomIntBetween:" and ask user to enter the text in the enter number text field.




回答3:


Though there is no Need to add Captcha in some Application, as Applications are not as like Web, So, as per my thinking there is no Need to attach the Captcha in some Application to prevent the Bots, Still if you need to embed it... Yes, Here is the Possible way, Please check the following codes:

Take these outlets and variables:

NSArray *arrCapElements;
IBOutlet UILabel *Captcha_label;
IBOutlet UITextField *Captcha_field;
IBOutlet UILabel *Status_label;

and IBActions as:

- (IBAction)Reload_Action:(id)sender;
- (IBAction)Submit_Action:(id)sender;

In storyboard choose the font name as Chalkduster 30.0 for the Captcha_label.

Now assign arrCapElements in viewDidLoad() as

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];

Code for load the 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);
    }
}

Reload Action:

- (IBAction)Reload_Action:(id)sender {

    [self load_captcha];
}

Check the captcha Correct or not:

- (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 =@"Success";
        Status_label.textColor = [UIColor greenColor];
    }else{
        Status_label.text =@"Faild";
        Status_label.textColor = [UIColor redColor];
    }
}

It will be shown like this:

Help taken from: Captcha Generator for iOS



来源:https://stackoverflow.com/questions/20972283/how-could-we-integrate-the-captcha-in-ios-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!