iOS - Card Identification 银行卡号识别
1、CardIO 识别
框架 GitHub 下载地址
配置
1、把框架整个拉进自己的工程,然后在 TARGETS => Build Phases => Link Binary With Libraries 里边分别加入下面这几个框架。
Accelerate.frameworkMobileCoreServices.frameworkCoreMedia.frameworkAudioToolbox.frameworkAVFoundation.framework
2、在TARGETS => Build Settings => Other Linker Flags 中添加 -ObjC 和 -lc++ 。
3、在 iOS8 + 系统中使用相机需要在 Info.plist 中添加 Privacy - Camera Usage Description,并设置其值。
4、在我们需要调用的文件中导入
// 导入头文件#import "CardIO.h"#import "CardIOPaymentViewControllerDelegate.h// 遵守协议<CardIOPaymentViewControllerDelegate>
开始扫描银行卡
[CardIOUtilities preload];CardIOPaymentViewController *scanViewController = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self];[self presentViewController:scanViewController animated:YES completion:nil];
取消扫描
// CardIOPaymentViewControllerDelegate 协议方法- (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController {[[[UIAlertView alloc] initWithTitle:@"User cancelled sca" message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil] show];[self dismissViewControllerAnimated:YES completion:nil];}
扫描完成
// CardIOPaymentViewControllerDelegate 协议方法- (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)cardInfo inPaymentViewController:(CardIOPaymentViewController *)paymentViewController {// 获取扫描结果// cardNumber 是扫描的银行卡号,显示的是完整号码,而 redactedCardNumber 只显示银行卡后四位,前面的用 * 代替了,返回的银行卡号都没有空格NSString *redactedCardNumber = cardInfo.cardNumber; // 卡号NSUInteger expiryMonth = cardInfo.expiryMonth; // 月NSUInteger expiryYear = cardInfo.expiryYear; // 年NSString *cvv = cardInfo.cvv; // CVV 码// 显示扫描结果NSString *msg = [NSString stringWithFormat:@"Number: %@\n\n expiry: %02lu/%lu\n\n cvv: %@", [self dealCardNumber:redactedCardNumber], expiryMonth, expiryYear, cvv];[[[UIAlertView alloc] initWithTitle:@"Received card info" message:msg delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil] show];[self dismissViewControllerAnimated:YES completion:nil];}
// 对银行卡号进行每隔四位加空格处理,自定义方法- (NSString *)dealCardNumber:(NSString *)cardNumber {NSString *strTem = [cardNumber stringByReplacingOccurrencesOfString:@" " withString:@""];NSString *strTem2 = @"";if (strTem.length % 4 == 0) {NSUInteger count = strTem.length / 4;for (int i = 0; i < count; i++) {NSString *str = [strTem substringWithRange:NSMakeRange(i * 4, 4)];strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];}} else {NSUInteger count = strTem.length / 4;for (int j = 0; j <= count; j++) {if (j == count) {NSString *str = [strTem substringWithRange:NSMakeRange(j * 4, strTem.length % 4)];strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];} else {NSString *str = [strTem substringWithRange:NSMakeRange(j * 4, 4)];strTem2 = [strTem2 stringByAppendingString:[NSString stringWithFormat:@"%@ ", str]];}}}return strTem2;}
效果
iOS - Card Identification 银行卡号识别相关推荐
- 银行卡号识别python_银行卡号识别 基于 OpenCV 光学字符识别(OCR)
银行卡号识别 基于 OpenCV 光学字符识别(OCR) 今天的博客文章是我们最近关于光学字符识别(OCR)和计算机视觉的系列的延续. 在之前的博客文章中,我们学习了如何安装Tesseract二进制文 ...
- 安卓Android、iOS移动端车牌识别OCR技术原理
核心内容:移动端车牌识别.安卓端车牌识别.Android车牌识别.iOS端车牌识别.OCR识别技术 一.安卓Android.iOS移动端车牌识别OCR技术识别流程 安卓Android.iOS移动端车牌 ...
- OCR-基于OpenCV、Tesseract的银行卡号识别
title: 'OCR:基于OpenCV.Tesseract的银行卡号识别' type: categories date: 2016-12-01 16:50:30 categories: OC tag ...
- 跨平台Android和IOS百度语音在线识别原生插件
一.插件推荐 跨平台Office文档.图片在线预览,视频播放原生插件 Android和IOS图片在线预览,视频播放原生插件 跨平台Android和IOS百度OCR文字识别.证卡识别.票据识别原生插件 ...
- iOS开发-面部距离识别 Vision 护眼模式 儿童防近视功能
iOS开发-面部距离识别 Vision 护眼模式 儿童防近视功能 前言-基于Vision和CIDetector 举例 大概思路 API 使用 Demo 前言-基于Vision和CIDetector i ...
- 图铭Android平台银行卡号识别系统
随着智能终端(智能手机及平板电脑)及移动通信(3G)的发展,原来运行在PC上的信息系统(如邮件系统.即时通信.网页浏览.协同办公.网络购物.社交网站.博客等)逐渐转移到智能终端设备上.可以预见未来几年 ...
- iOS平台下人脸识别的实现
iOS平台下人脸识别的实现 电子科技大学 格拉斯哥学院 林浩阳 2017200605028 1.背景介绍 2.Ada Boost人脸检测算法 3.改进的人脸识别算法 4.系统设计与实现 5.前景展望 ...
- 银行卡号识别Bank Card Rec 主要功能接口说明
Bank Card Rec 主要功能接口说明: 说明:如果需要其他接口都可以封装出来 主接口 /*调用识别之前先初始化一次*/ int init_all (); /* 调用识别,读取图像版本函数: p ...
- iOS根据银行卡号识别银行
+ (NSString *)getBankName:(NSString*) cardId{//发卡行.卡种名称NSArray *bankName = @[@"邮储银行·绿卡通", ...
最新文章
- 面试前赶紧看了5道Python Web面试题,Python面试题No17
- PHP ftp_mkdir 函数
- 5G商用元年!最新鲜热辣的使用指南看这里
- python定义私有变量的方法_Python面向对象程序设计之私有变量,私有方法原理与用法分析...
- [MySQL优化案例]系列 -- OPTIMIZE的威力
- java接口测试工具_这 5 款实用性能测试工具,你会如何选择?
- java string.format_如果性能很重要,我应该使用Java的String.format()吗?
- [C++] 构造函数 which is of non-class type
- 【Oracle】SCOPE=MEMORY|SPFILE|BOTH
- java方法参数传递机制
- 计算机考研如何选?中国人民大学学长两年考研经验+权威预测
- Seat分布式事务学习
- 手机平板功放芯片BCT8933,PINtoPIN替换AW8733
- 华为android系统管理,安卓系统即将迎来封闭管理?华为首先发起,网友:流畅度更重要...
- ForestBlog博客源码学习笔记
- SECS/GEM通信协议学习之报文
- ie测试兼容的软件,IE系列浏览器兼容性测试点整理
- 【2018 CodeM】资格赛---下单
- 华为鸿蒙系统专利申请,华为“鸿蒙”系统进一步推进,UI界面获得专利,谷歌慌了!...
- 电梯黑板签到的测试用例
热门文章
- bootstrap treetable 树形网格,动态扩展,连数据库
- MSSQL日期格式转换函数(使用CONVERT)
- IDEA中启动tomcat
- hadoo分布式安装
- (8)Powershell中变量的定义和使用
- Python asyncio库的学习和使用
- apache2.4.18中启用h2c
- 90.根据指令修改发往上游的请求
- instanceof java 原理_JAVA中 instanceof 和 getClass() 区别小结
- ominigraffle 模板_商河盖梁模板安装