扫一扫 SDK 是支付宝目前正在使用的识别二维码、条形码等功能的 SDK 。本文介绍如何将扫一扫组件接入到 iOS 客户端。扫一扫支持 基于 mPaaS 框架接入、基于已有工程且使用 mPaaS 插件接入 以及 基于已有工程且使用 CocoaPods 接入 三种接入方式。您可以参考 接入方式介绍,根据实际业务情况选择合适的接入方式。
前置条件
您已经根据您的接入方式,将扫一扫组件 SDK 添加至工程。更多信息,请参见以下内容:
添加SDK
根据您采用的接入方式,请选择相应的添加方式。
使用 mPaaS Xcode Extension。此方式适用于采用了 基于 mPaaS 框架接入 或 基于已有工程且使用 mPaaS 插件接入 的接入方式。
单击 Xcode 菜单项 Editor > mPaaS > 编辑工程,打开编辑工程页面。
选择 扫码,保存后点击 开始编辑,即可完成添加。
使用 cocoapods-mPaaS 插件。此方式适用于采用了 基于已有工程且使用 CocoaPods 接入 的接入方式。
在 Podfile 文件中,使用
mPaaS_pod "mPaaS_ScanCode"
添加扫码组件依赖。在命令行中执行
pod install
即可完成接入。
使用 SDK( ≥ 10.1.68.17 )
本文将结合 扫一扫 官方 Demo 介绍如何在 10.1.68.17 及以上版本的基线中使用扫一扫 SDK。
说明
多码识别功能只支持在标准 UI 下使用。
操作步骤如下:
唤起标准扫码页面并处理扫描结果。
@interface MPScanDemoVC()<TBScanViewControllerDelegate> @property(nonatomic, strong) TBScanViewController *scanVC; @end - (void)defaultScan { TBScanViewController *vc = [[MPScanCodeAdapterInterface sharedInstance] createDefaultScanPageWithallback:^(id _Nonnull result, BOOL keepAlive) { 0000000000000000 // 处理扫描结果 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:result[@"resp_result"] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; alert.tag = 1999; [alert show]; }]; [self.navigationController pushViewController:vc animated:YES]; self.scanVC = vc; }
持续扫码。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { // 持续扫码 [self.scanVC resumeScan]; }
使用 SDK( < 10.1.68.17 )
本文将结合 扫一扫 官方 Demo 介绍如何在 10.1.68.17 以下版本的基线中使用扫一扫 SDK。
操作步骤如下:
唤起扫码界面。
@interface MPScanDemoVC()<TBScanViewControllerDelegate> @property(nonatomic, strong) TBScanViewController *scanVC; @end - (void)startDefauleScanViewController { TBScanViewController *vc = [[TBScanViewController alloc] init]; vc.scanType = ScanType_All_Code; vc.delegate = self; [self.navigationController pushViewController:vc animated:YES]; self.scanVC = vc; }
处理扫描结果。
#pragma mark 处理扫描结果 -(void)didFind:(NSArray<TBScanResult*>*)resultArray { if([resultArray count] > 0) { TBScanResult *result = resultArray.firstObject; NSString* content = result.data; dispatch_async(dispatch_get_main_queue(), ^{ // 注意:扫码的结果是在子线程,如有 UI 相关操作,请切换到主线程 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:content delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; }); } }
持续扫码。
#pragma mark alert - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { [self.scanVC resumeScan]; }
文档内容是否对您有帮助?