快速開(kāi)始
掃一掃 SDK 是支付寶目前正在使用的識(shí)別二維碼、條形碼等功能的 SDK 。本文介紹如何將掃一掃組件接入到 iOS 客戶端。掃一掃支持 基于 mPaaS 框架接入、基于已有工程且使用 mPaaS 插件接入 以及 基于已有工程且使用 CocoaPods 接入 三種接入方式。您可以參考 接入方式介紹,根據(jù)實(shí)際業(yè)務(wù)情況選擇合適的接入方式。
前置條件
您已經(jīng)根據(jù)您的接入方式,將掃一掃組件 SDK 添加至工程。更多信息,請(qǐng)參見(jiàn)以下內(nèi)容:
添加SDK
根據(jù)您采用的接入方式,請(qǐng)選擇相應(yīng)的添加方式。
使用 mPaaS Xcode Extension。此方式適用于采用了 基于 mPaaS 框架接入 或 基于已有工程且使用 mPaaS 插件接入 的接入方式。
單擊 Xcode 菜單項(xiàng) Editor > mPaaS > 編輯工程,打開(kāi)編輯工程頁(yè)面。
選擇 掃碼,保存后點(diǎn)擊 開(kāi)始編輯,即可完成添加。
使用 cocoapods-mPaaS 插件。此方式適用于采用了 基于已有工程且使用 CocoaPods 接入 的接入方式。
在 Podfile 文件中,使用
mPaaS_pod "mPaaS_ScanCode"
添加掃碼組件依賴。在命令行中執(zhí)行
pod install
即可完成接入。
使用 SDK( ≥ 10.1.68.17 )
本文將結(jié)合 掃一掃 官方 Demo 介紹如何在 10.1.68.17 及以上版本的基線中使用掃一掃 SDK。
多碼識(shí)別功能只支持在標(biāo)準(zhǔn) UI 下使用。
操作步驟如下:
喚起標(biāo)準(zhǔn)掃碼頁(yè)面并處理掃描結(jié)果。
@interface MPScanDemoVC()<TBScanViewControllerDelegate> @property(nonatomic, strong) TBScanViewController *scanVC; @end - (void)defaultScan { TBScanViewController *vc = [[MPScanCodeAdapterInterface sharedInstance] createDefaultScanPageWithallback:^(id _Nonnull result, BOOL keepAlive) { 0000000000000000 // 處理掃描結(jié)果 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; }
持續(xù)掃碼。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { // 持續(xù)掃碼 [self.scanVC resumeScan]; }
使用 SDK( < 10.1.68.17 )
本文將結(jié)合 掃一掃 官方 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; }
處理掃描結(jié)果。
#pragma mark 處理掃描結(jié)果 -(void)didFind:(NSArray<TBScanResult*>*)resultArray { if([resultArray count] > 0) { TBScanResult *result = resultArray.firstObject; NSString* content = result.data; dispatch_async(dispatch_get_main_queue(), ^{ // 注意:掃碼的結(jié)果是在子線程,如有 UI 相關(guān)操作,請(qǐng)切換到主線程 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:content delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; }); } }
持續(xù)掃碼。
#pragma mark alert - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { [self.scanVC resumeScan]; }