中软云解码sdk集成文档


iOS-NFC身份证云解码调用文档

<h1>概要说明</h1> <p>iOS系统NFC相关API需要 13.0 系统以上,因此接入的APP运行环境只有iOS 13以上才能正常调用 SDK 提供的API。</p> <p>如果 App支持 13.0 以下iOS系统版本,请在调用API之前判断系统版本号,屏蔽相关调用,否则将调用失败。   说明:iOS 接入不支持模拟器模式调试   本SDK 使用开发语言为 Objective-C</p> <h1>配置开发环境</h1> <h3>1. 在Xcode的编译环境设置中,选择Linking &gt; Other Linker Flags,添加-ObjC。</h3> <p><img src="http://" alt="Description" /></p> <h3>2. 应用权限配置</h3> <h4>1)登录苹果开发者管理平台,确认当前bundle ID下的NFC Tag Reading已经选中。</h4> <h4>2)在项目工程的info.plist文件中添加Privacy - NFC Scan Usage Description和ISO7816 application identifiers for NFC Tag Reader Session,在item0中填写 F049442E43484E(身份证)。</h4> <p><img src="http://imgsrc.baidu.com/forum/pic/item/377adab44aed2e7368435414c101a18b87d6fa65.jpg" alt="Description" /> <img src="http://imgsrc.baidu.com/forum/pic/item/e824b899a9014c089fb7fa9d4c7b02087bf4f47f.jpg" alt="Description" /></p> <h4>3)在Xcode中,选择TARGETS &gt; Signing&amp;Capabilities &gt; All,添加Near Field Communication Tag Reading。</h4> <p><img src="http://imgsrc.baidu.com/forum/pic/item/562c11dfa9ec8a139e9285d8b103918fa0ecc07b.jpg" alt="Description" /></p> <h1>配置依赖</h1> <h2>1)导入iOS SDK</h2> <p>该 SDK 为 framework 包:<code>ZRGKReadCardSDK.framework</code>。</p> <h2>2)添加库依赖</h2> <p>在Build Phases &gt; Link Binary With Libraries中,添加以下系统库依赖:<code>libc++.tbd</code></p> <h1>调用SDK</h1> <h2>1)引入头文件</h2> <pre><code>#import &amp;lt;ZRGKReadCardSDK/ZRGKReadCardSDK.h&amp;gt;</code></pre> <h4>SDK包含的文件说明:</h4> <table> <thead> <tr> <th style="text-align: left;">类名/文件名</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">ZRGKReadCardSDK.h</td> <td style="text-align: left;">ZRGKReadCardSDK.h</td> </tr> <tr> <td style="text-align: left;">ZRGKReadCardManager</td> <td style="text-align: left;">SDK证件识别主要类,单例模式,提供初始化和调用接口</td> </tr> <tr> <td style="text-align: left;">ZRGKReadCardConfig</td> <td style="text-align: left;">SDK初始化配置类,保存和传递配置参数</td> </tr> <tr> <td style="text-align: left;">ZRGKIDCard</td> <td style="text-align: left;">ZRGKIDCard</td> </tr> </tbody> </table> <h2>2)初始化SDK</h2> <p>NFC认证需要准备一些必要的数据,iOS客户端需要初始化和配置SDK相关参数, 如实例参考代码:</p> <pre><code>ZRGKReadCardConfig *config = [[ZRGKReadCardConfig alloc] init]; config.appId = @&amp;quot;ABCDEF888&amp;quot;; [ZRGKReadCardManager startWithConfig:config];</code></pre> <p>上述代码只需要 app 运行期间调用一次即可,放在调用识别证件接口之前。</p> <h2>3)配置参数说明</h2> <h4>ZRGKReadCardConfig 类可配置的参数如下:</h4> <table> <thead> <tr> <th style="text-align: left;">参数名称</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">是否必传</th> <th style="text-align: left;">参数说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">appId</td> <td style="text-align: left;">NSString</td> <td style="text-align: left;">必传</td> <td style="text-align: left;">测试使用的appid不可用于商用(否则后果自负),商用的appid请务必联系我司商务进行分配</td> </tr> <tr> <td style="text-align: left;">ip</td> <td style="text-align: left;">NSString</td> <td style="text-align: left;">非必传</td> <td style="text-align: left;">服务器IP(IP传空字符时,默认使用内置地址)</td> </tr> <tr> <td style="text-align: left;">port</td> <td style="text-align: left;">uint16_t</td> <td style="text-align: left;">非必传</td> <td style="text-align: left;">服务器端口号</td> </tr> <tr> <td style="text-align: left;">cacheLastIDCardInfo</td> <td style="text-align: left;">BOOL</td> <td style="text-align: left;">非必传</td> <td style="text-align: left;">缓存上一个身份证信息数据,默认为YES(连续识别同一个身份证信息时可以加快读取)</td> </tr> <tr> <td style="text-align: left;">openLog</td> <td style="text-align: left;">BOOL</td> <td style="text-align: left;">非必传</td> <td style="text-align: left;">默认为YES, 异常日志保存时间5天</td> </tr> <tr> <td style="text-align: left;">logFolderPath</td> <td style="text-align: left;">NSString</td> <td style="text-align: left;">非必传</td> <td style="text-align: left;">日志所在文件夹路径,默认为app沙盒路径 XXX/Library/Caches/ZRGKLogCache,可以指定到其他可可读写路径</td> </tr> </tbody> </table> <p>添加备用服务端ip和端口地址可以使用下面方法(非必须):</p> <pre><code>(void)addStandbyIp:(NSString *)ip port:(uint16_t)port;</code></pre> <h2>4)调用SDK开始证件识别</h2> <h3>ZRGKReadCardManager 接口说明:</h3> <h4>返回单例对象</h4> <pre><code>/// 返回默认单例对象 (ZRGKReadCardManager *)sharedManager;</code></pre> <h4>初始化和配置</h4> <pre><code>/// SDK 初始化 /// 返回的 error 为 nil 表示初始化成功,否则对照错误码检测传入参数 /// -Parameter config: 参数配置 (NSError *)startWithConfig:(ZRGKReadCardConfig *)config;</code></pre> <h4>识别证件信息(包括证件照片信息)</h4> <pre><code>/// 识别身份证、外国人居住证,并返回证件信息(包括证件照片信息) /// - Parameters: ///   - successCall: 成功回调 ///   - failCall: 失败回调 (void)readIDCardStart:(ZRGKOnReadIDCardSuccess)successCall fail:(ZRGKOnReadIDCardFail)failCall;</code></pre> <h4>识别身份证、外国人居住证,仅返回不包括照片的证件信息</h4> <p>不需要照片信息场景下使用,加快解码速度</p> <pre><code>/// 识别身份证、外国人居住证,仅返回不包括照片的证件信息(不需要照片信息场景下使用,加快解码速度) /// - Parameters: ///   - successCall: 成功回调 ///   - failCall: 失败回调 (void)readIDCardWithoutImageStart:(ZRGKOnReadIDCardSuccess)successCall fail:(ZRGKOnReadIDCardFail)failCall;</code></pre> <h4>识别身份证,并模拟生成身份证图片</h4> <pre><code>/// 识别身份证,并生成身份证图片 /// - Parameters: ///   - successCall: 识别成功并生成图片成功回调 ///   - failCall: 失败回调 (void)readIDCardToImage:(ZRGKOnReadIDCardToImageSuccess)successCall fail:(ZRGKOnReadIDCardFail)failCall;</code></pre> <h4>停止读卡</h4> <pre><code>/// 停止读卡 (void)stopReadCard;</code></pre> <h4>检测设备是否支持识别</h4> <pre><code>/// 当前设备是否支持NFC (BOOL)isNFCAvailable;</code></pre> <h4>上传异常日志到SDK服务器</h4> <p>可协助客户排查异常</p> <pre><code>/// 执行上传异常日志 (void)uploadLog;</code></pre> <h4>查看SDK版本号</h4> <pre><code>(NSString *)sdkVersion;</code></pre> <h2>5)接口相关参数和类型、回调结果说明</h2> <h3>识别证件信息成功回调</h3> <pre><code>typedef void(^ZRGKOnReadIDCardSuccess)(ZRGKIDCard * _Nonnull IDCard);</code></pre> <h3>身份证详细信息</h3> <table> <thead> <tr> <th style="text-align: left;">名称</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">type</td> <td style="text-align: left;">ZRGKIDCardType</td> <td>枚举类型ZRGKIDCardType_IDCARD=中国居民身份证</td> </tr> <tr> <td style="text-align: left;">ID</td> <td style="text-align: left;">NSString</td> <td>身份证号码</td> </tr> <tr> <td style="text-align: left;">sex</td> <td style="text-align: left;">NSString</td> <td>性别</td> </tr> <tr> <td style="text-align: left;">startDate</td> <td style="text-align: left;">NSString</td> <td>身份证生效时间</td> </tr> <tr> <td style="text-align: left;">endDate</td> <td style="text-align: left;">NSString</td> <td>身份证结束时间</td> </tr> <tr> <td style="text-align: left;">imageData</td> <td style="text-align: left;">NSData</td> <td>照片原始信息</td> </tr> <tr> <td style="text-align: left;">birthday</td> <td style="text-align: left;">NSString</td> <td>出生日期</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">NSString</td> <td>姓名</td> </tr> <tr> <td style="text-align: left;">nation</td> <td style="text-align: left;">NSString</td> <td>民族</td> </tr> <tr> <td style="text-align: left;">address</td> <td style="text-align: left;">NSString</td> <td>家庭住址</td> </tr> <tr> <td style="text-align: left;">issue</td> <td style="text-align: left;">NSString</td> <td>签发机关</td> </tr> <tr> <td style="text-align: left;">dn</td> <td style="text-align: left;">NSString</td> <td>dn码</td> </tr> <tr> <td style="text-align: left;">uid</td> <td style="text-align: left;">NSString</td> <td>身份证uid信息</td> </tr> </tbody> </table> <h3>外国人永久居住证信息:</h3> <table> <thead> <tr> <th style="text-align: left;">名称</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">type</td> <td style="text-align: left;">ZRGKIDCardType</td> <td>枚举类型ZRGKIDCardType_IDCARD_FOREIGN=外国永久居住证</td> </tr> <tr> <td style="text-align: left;">ID</td> <td style="text-align: left;">NSString</td> <td>证件号码</td> </tr> <tr> <td style="text-align: left;">sex</td> <td style="text-align: left;">NSString</td> <td>性别</td> </tr> <tr> <td style="text-align: left;">startDate</td> <td style="text-align: left;">NSString</td> <td>证件生效开始时间</td> </tr> <tr> <td style="text-align: left;">endDate</td> <td style="text-align: left;">NSString</td> <td>证件生效结束时间</td> </tr> <tr> <td style="text-align: left;">imageData</td> <td style="text-align: left;">NSData</td> <td>照片原始信息</td> </tr> <tr> <td style="text-align: left;">birthday</td> <td style="text-align: left;">NSString</td> <td>出生日期</td> </tr> <tr> <td style="text-align: left;">name</td> <td style="text-align: left;">NSString</td> <td>姓名</td> </tr> <tr> <td style="text-align: left;">nation</td> <td style="text-align: left;">NSString</td> <td>民族</td> </tr> <tr> <td style="text-align: left;">address</td> <td style="text-align: left;">NSString</td> <td>家庭住址</td> </tr> <tr> <td style="text-align: left;">issue</td> <td style="text-align: left;">NSString</td> <td>签发机关</td> </tr> <tr> <td style="text-align: left;">historicalNumber</td> <td style="text-align: left;">NSString</td> <td>既往版本证件号码关联项</td> </tr> <tr> <td style="text-align: left;">nameEnglishAdd</td> <td style="text-align: left;">NSString</td> <td>英文姓名备用</td> </tr> <tr> <td style="text-align: left;">nationlity</td> <td style="text-align: left;">NSString</td> <td>国籍</td> </tr> <tr> <td style="text-align: left;">cardType</td> <td style="text-align: left;">NSString</td> <td>卡类型</td> </tr> <tr> <td style="text-align: left;">dn</td> <td style="text-align: left;">NSString</td> <td>dn码</td> </tr> <tr> <td style="text-align: left;">nameEnglish</td> <td style="text-align: left;">NSString</td> <td>英文姓名</td> </tr> <tr> <td style="text-align: left;">nameChinese</td> <td style="text-align: left;">NSString</td> <td>中文姓名</td> </tr> <tr> <td style="text-align: left;">renewalNumber</td> <td style="text-align: left;">NSString</td> <td>换证次数</td> </tr> <tr> <td style="text-align: left;">cardVersion</td> <td style="text-align: left;">NSString</td> <td>卡版本号</td> </tr> </tbody> </table> <h3>识别身份证并模拟生成身份证图片成功回调</h3> <pre><code>typedef void(^ZRGKOnReadIDCardToImageSuccess)(UIImage * _Nonnull idCardFront, UIImage * _Nonnull idCardBack);</code></pre> <p>其中:idCardFront 为正面图片,idCardBack 为背面图片</p> <h3>识别失败回调</h3> <pre><code>typedef void(^ZRGKOnReadIDCardFail)(ZRGKSDKStateCode reasonCode, NSString * _Nullable erroMsg);</code></pre> <h3>识别失败错误码说明</h3> <h4>错误码定义为 ZRGKSDKStateCode 枚举类型,主要包括以下这些:</h4> <pre><code> /// 缺少 AppId 或传入 AppId 无效,不可用     ZRGKSDKStateCode_AppIdInvalid   = 1002,     /// 网络不可用     ZRGKSDKStateCode_NetNoReachable,     /// 其他初始化错误     ZRGKSDKStateCode_InitFail,     /// 当前手机或系统版本不支持     ZRGKSDKStateCode_NOSupport,     /// 用户取消     ZRGKSDKStateCode_UserCancel,     /// 检测失败,识别识别     ZRGKSDKStateCode_DetectFail,     /// 连接芯片失败     ZRGKSDKStateCode_ConnectTagFail,     /// 网络连接服务器失败     ZRGKSDKStateCode_ConnectServerFail,     /// 网络发送数据失败     ZRGKSDKStateCode_SendToServerFail,     /// 指令执行出错     ZRGKSDKStateCode_InstructFail,     /// 数据解析失败     ZRGKSDKStateCode_DataParseFail,     /// token失效     ZRGKSDKStateCode_TokenExpire,     /// 请求数据失败     ZRGKSDKStateCode_RequestFail,     /// 生成图片失败     ZRGKSDKStateCode_GenerateImageFail,     /// 生成图片类型不支持,只支持生成身份证类型     ZRGKSDKStateCode_ImageTypeNoSupport,     /// 其他异常     ZRGKSDKStateCode_Other,</code></pre> <h1>SDK Demo文件</h1> <p>参见具体附带 demo 代码文件</p>

页面列表

ITEM_HTML