快速开始

扫一扫 SDK 是支付宝目前正在使用的识别二维码、条形码等功能的 SDK 。本文介绍如何将扫一扫组件接入到 iOS 客户端。扫一扫支持 基于 mPaaS 框架接入基于已有工程且使用 mPaaS 插件接入 以及 基于已有工程且使用 CocoaPods 接入 三种接入方式。您可以参考 接入方式介绍,根据实际业务情况选择合适的接入方式。

前置条件

您已经根据您的接入方式,将扫一扫组件 SDK 添加至工程。更多信息,请参见以下内容:

添加SDK

根据您采用的接入方式,请选择相应的添加方式。

  • 使用 mPaaS Xcode Extension。此方式适用于采用了 基于 mPaaS 框架接入基于已有工程且使用 mPaaS 插件接入 的接入方式。

    1. 单击 Xcode 菜单项 Editor > mPaaS > 编辑工程,打开编辑工程页面。

    2. 选择 扫码,保存后点击 开始编辑,即可完成添加。

  • 使用 cocoapods-mPaaS 插件。此方式适用于采用了 基于已有工程且使用 CocoaPods 接入 的接入方式。

    1. 在 Podfile 文件中,使用 mPaaS_pod "mPaaS_ScanCode" 添加扫码组件依赖。

    2. 在命令行中执行 pod install 即可完成接入。

使用 SDK( ≥ 10.1.68.17 )

本文将结合 扫一扫 官方 Demo 介绍如何在 10.1.68.17 及以上版本的基线中使用扫一扫 SDK。

说明

多码识别功能只支持在标准 UI 下使用。

操作步骤如下:

  1. 唤起标准扫码页面并处理扫描结果。

      @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;
     }
  2. 持续扫码。

     - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
         // 持续扫码
         [self.scanVC resumeScan];
     }

使用 SDK( < 10.1.68.17 )

本文将结合 扫一扫 官方 Demo 介绍如何在 10.1.68.17 以下版本的基线中使用扫一扫 SDK。

操作步骤如下:

  1. 唤起扫码界面。

     @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;
     }
  2. 处理扫描结果。

     #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];
             });
         }
     }
  3. 持续扫码。

     #pragma mark alert
     - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
         [self.scanVC resumeScan];
     }