我们如何在iOS应用程序中集成Captcha?

时间:2014-01-07 12:59:10

标签: ios iphone ipad captcha recaptcha

我在iOS应用中搜索了Captcha的集成,但没有找到任何相关的方法。即使我使用reCAPTCHA注册并搜索了Captcha的插件是否适用于iOS?我没有找到iOS的任何插件。在RND的某个地方,我开始知道"它不是移动应用程序所必需的" ,但客户希望Captcha在他的申请中,我想知道: -

  • 我们是否可以在iOS App / Mobile Apps中集成Captcha: -

    1. 如果是的话? :那么整合它的相关方法是什么。

    2. 如果不是? :那么相关原因是什么。

3 个答案:

答案 0 :(得分:2)

对于我来说,我使用以下库:

https://github.com/fjcaetano/ReCaptcha

它将使用隐藏的网络视图来处理

答案 1 :(得分:-2)

虽然我们在iOS中没有任何适用于Captcha的API,但即使 reCaptcha 也没有为iOS提供任何插件。甚至许多人都建议我不需要为移动应用程序实现验证码。我同意了,但由于客户无法听取任何借口我所做的是,

  1. 我只是使用

    创建了随机数

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

    将该号码放在标签上并要求用户在提供的textField中输入相同的号码,如果找到匹配,则验证码的主要内容已经完成[另一端的用户是人类是集成验证码的唯一主体],另外,我重新生成随机数并将其再次放在标签上,要求用户在提供的textField中输入相同的数字 最终结果将是这样的。

  2. It Will Look Something Like This

    现在您的想法可能更清楚了,只需将函数“randomIntBetween”的输出分配给显示该数字的标签,并在用户按下登录按钮时验证textField(Named:Enter number)中的文本是否与其左侧的标签匹配,如果匹配则允许用户登录,如果不匹配,则清除文本字段的文本以及标签上的文本然后分配新的随机数通过调用方法“randomIntBetween:”到左边的标签,并要求用户在输入数字文本字段中输入文本。

答案 2 :(得分:-2)

虽然没有必要在某些应用程序中添加Captcha,因为应用程序不像Web一样,所以,根据我的想法,没有必要在某些应用程序中附加Captcha以防止机器人,如果你需要把它嵌入...... 是的,这是可能的方法,请检查以下代码:

采取这些出路和变量:

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

IBActions as:

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

在情节提要中,为Captcha_label选择字体名称为 Chalkduster 30.0

现在将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];

加载验证码的代码:

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

它将如下所示:

Demo Screen

帮助来自:Captcha Generator for iOS