最近由于公司需要一个扫描银行卡获取卡号的功能,网上找了很多相关的资料,完全扫描银行卡获取卡号信息的都是价格贵的不得了的,而且仅仅只是授权而已,在此咱退而求次,找到一个可以扫描信用卡的第三方框架,给大家伙分享一下,只能扫描信用卡……o.0。

框架的名字叫CardIO

  • 下载地址

    https://github.com/AllLuckly/card.io-iOS-SDK

在这里主要给大家演示一下怎么集成的,各位看官可得注意咯!我的xcode是7.1版本的,首先是把框架整个拉进自己的工程,然后在TARGETS—Build Phases—Link Binary With Libraries里边分别加入下面这几个框架

Accelerate.framework

MobileCoreServices.framework

CoreMedia.framework

AudioToolbox.framework

AVFoundation.framework

再在TARGETS—Build Settings—Other Linker Flags中添加-ObjC和-lc++然后在我们需要调用的VC中导入头文件#import "CardIO.h"和#import "CardIOPaymentViewControllerDelegate.h"加上代理CardIOPaymentViewControllerDelegate

然后是实现的方法

OC版

- (void)viewDidLoad {

[super viewDidLoad];

[CardIOUtilities preload];

}

//开始调用扫描

- (IBAction)begin:(id)sender {

CardIOPaymentViewController *scanViewController = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self];

[self presentViewController:scanViewController animated:YES completion:nil];

}

//取消扫描

- (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)scanViewController

{

[scanViewController dismissViewControllerAnimated:YES completion:nil];

}

//扫描完成

-(void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)info inPaymentViewController:(CardIOPaymentViewController *)scanViewController

{

//扫描结果

NSLog(@"Received card info. Number: %<a href="http://www.jobbole.com/members/uz441800">@,</a> expiry: %02i/%i, cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv);

[scanViewController dismissViewControllerAnimated:YES completion:nil];

}

SWIFT版

import UIKit

class ViewController: UIViewController, CardIOPaymentViewControllerDelegate {

@IBOutlet weak var resultLabel: UILabel!

override func viewDidLoad() {

super.viewDidLoad()

CardIOUtilities.preload()

}

//开始调用扫描

@IBAction func scanCard(sender: AnyObject) {

let cardIOVC = CardIOPaymentViewController(paymentDelegate: self)

cardIOVC.modalPresentationStyle = .FormSheet

presentViewController(cardIOVC, animated: true, completion: nil)

}

//取消扫描

func userDidCancelPaymentViewController(paymentViewController: CardIOPaymentViewController!) {

resultLabel.text = "user canceled"

paymentViewController?.dismissViewControllerAnimated(true, completion: nil)

}

//扫描完成

func userDidProvideCreditCardInfo(cardInfo: CardIOCreditCardInfo!, inPaymentViewController paymentViewController: CardIOPaymentViewController!) {

if let info = cardInfo {

let str = NSString(format: "Received card info.\\\\n Number: %@\\\\n expiry: %02lu/%lu\\\\n cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv)

resultLabel.text = str as String

}

paymentViewController?.dismissViewControllerAnimated(true, completion: nil)

}

}

到此就大功告成了,老外封装的东西还是非常给力的,希望可以找到扫描银行卡比较好用的第三方。

最终的效果,识别的非常准确哦

iOS开发之OCR光学识别储蓄卡以及信用卡的更多相关文章

  1. 李洪强iOS开发之iOS社区收集

    李洪强iOS开发之iOS社区收集 项目 简述 github 全球最大的代码仓库,无论是iOS开发还是Android开发没有人不知道这个网站,它也是一个社区,你可以去follow(关注)某些人或公司. ...

  2. iOS 开发之 GCD 基础

    header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em} .markdown-body{overflow:hidden} .markdo ...

  3. IOS开发之ZBarReaderView的使用

    IOS开发之ZBarReaderView的使用 HOMEABOUTGUESTBOOKCATEGORIESTAGSLINKSSUBSCRIBE 当开发IOS程序中需要用到二维码识别功能的时候,zbar这 ...

  4. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  5. iOS开发之UISearchBar初探

    iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...

  6. iOS开发之UIImage等比缩放

    iOS开发之UIImage等比缩放 评论功能真不错 评论开通后,果然有很多人吐槽.谢谢大家的支持和关爱,如果有做的不到的地方,还请海涵.毕竟我一个人的力量是有限的,我会尽自己最大的努力大家准备一些干货 ...

  7. iOS开发之 Xcode6 添加xib文件,去掉storyboard的hello world应用

    iOS开发之  Xcode6.1创建仅xib文件,无storyboard的hello world应用 由于Xcode6之后,默认创建storyboard而非xib文件,而作为初学,了解xib的加载原理 ...

  8. iOS开发之loadView、viewDidLoad及viewDidUnload的关系

    iOS开发之loadView.viewDidLoad及viewDidUnload的关系 iOS开发之loadView.viewDidLoad及viewDidUnload的关系    标题中所说的3个方 ...

  9. iOS开发之info.pist文件和.pch文件

    iOS开发之info.pist文件和.pch文件 如果你是iOS开发初学者,不用过多的关注项目中各个文件的作用.因为iOS开发的学习路线起点不在这里,这些文件只会给你学习带来困扰. 打开一个项目,我们 ...

随机推荐

  1. Ext入门学习系列(三)复杂自定义窗体

    通过前2节的学习,基本掌握了Ext的语法和运行原理,可以作出一些简单的应用.本节我们一起来完成复杂点的对话框操作,因为在实际项目中经常要用到确认对话框等多种操作,然后根据客户的选择作出不同的响应. 一 ...

  2. CVTE公司面经

    1.先是网上测评,通过后通知你参加一面. 2.关于一面:一共进行了10分钟左右,三四个人一起面,没有问什么技术. 一共问了3个问题:a.你为什么选择我们公司的这个职位.我答的大概意思是本科研究生期间, ...

  3. C#中数据类型的安全转换(is,as)

    原文 C#中数据类型的安全转换(is,as) 下面代码中,不能装箱,在强制类型转换时出错,因为之前 c 是 class 类型,而却要把它转换为 int 类型,这是不可以的.虽然编译器能通过编译,但是 ...

  4. HDU 5690 All X 暴力循环节

    分析:暴力找循环节就好了 #include <iostream> #include <cstdio> #include <cstdlib> #include < ...

  5. POJ3241 Object Clustering 曼哈顿最小生成树

    题意:转换一下就是求曼哈顿最小生成树的第n-k条边 参考:莫涛大神的论文<平面点曼哈顿最小生成树> /* Problem: 3241 User: 96655 Memory: 920K Ti ...

  6. Mobile testing基础之Native、Web、Hybrid、activity、webview

    应用一词指的是app,即application.原生应用指的是能直接运行于当前操作系统的应用程序:web应用指需要在浏览器中运行的网页应用,由于界面体验.功能上都更加强大,可媲美原生应用,故称web应 ...

  7. 【原创】使用Nmon_Analyzer处理较大nmon文件的方法

    1 编写目的 进行性能测试时,测试服务器使用的操作系统是Linux或Unix时,我们一般会使用Nmon工具进行操作系统资源监控数据的收集.Nmon工具是一款非常优秀的性能监控和分析工具,它能够实时地收 ...

  8. 【整理】C++虚函数及其继承、虚继承类大小

    参考文章: http://blog.chinaunix.net/uid-25132162-id-1564955.html http://blog.csdn.net/haoel/article/deta ...

  9. 在LinearLayout中实现列表,列表采用LinearLayout横向布局-android学习

    不多讲直接上代码 1.Activity 对应的布局文件如下: <?xml version="1.0" encoding="utf-8"?> < ...

  10. dateline 在数据库中就是 整型字段。date函数是可以转换成可读日期的。

    返回数据中的dateline全部用date()函数转换后再返回,是要嵌套循环还是遍历,代码怎么写? //查询我的活动 function user_activity_info_by_uid($uid){ ...