Skip to content

showScanCode

调起扫码功能,支持小程序和App端。

前置依赖

依赖参数

参数名类型说明
deps.scanCodeUniApp['scanCode']扫码 API
deps.logConsole['log']日志输出
deps.errorConsole['error']错误输出
deps.warnConsole['warn']警告输出(可选)
deps.detectEnvironment() => 'h5' | 'miniapp' | 'app' | 'unknown'检测环境函数(可选)

环境要求

  • UniApp环境: 使用UniApp API,支持小程序、App端
  • 注意: H5端不支持,需要使用第三方扫码库或引导用户使用小程序/App扫码

函数签名

typescript
function showScanCode(
  options?: ScanCodeOptions,
  deps: ShowScanCodeDeps
): Promise<ScanCodeResult>

interface ShowScanCodeDeps {
  scanCode: UniApp['scanCode']
  log: Console['log']
  error: Console['error']
  warn?: Console['warn']
  detectEnvironment?: () => 'h5' | 'miniapp' | 'app' | 'unknown'
}

interface ScanCodeOptions {
  onlyFromCamera?: boolean
  scanType?: ('qrCode' | 'barCode')[]
  autoDecodeCharSet?: boolean
  extraData?: Record<string, unknown>
}

interface ScanCodeResult {
  errMsg?: string
  result?: string
  scanType?: string
  charSet?: string
  path?: string
  raw?: unknown
}

参数

参数名类型必填默认值说明
optionsScanCodeOptions{}扫码选项
options.onlyFromCamerabooleanfalse是否只允许从相机扫码
options.scanType('qrCode' | 'barCode')[]['barCode', 'qrCode']扫码类型
options.autoDecodeCharSetbooleanfalse是否自动识别字符编码
depsShowScanCodeDeps-依赖注入对象

返回值

类型说明
Promise<ScanCodeResult>Promise,成功时返回扫码结果,包含扫码内容、类型、字符编码等信息

工作原理

  1. 环境检测:检查当前是否为小程序或App环境
  2. 平台适配
    • 小程序端:使用 uni.scanCode
    • App端:使用 uni.scanCode
    • H5端:不支持,返回错误提示
  3. 调起扫码:调用对应平台的扫码接口
  4. 返回结果:返回扫码结果,包含二维码/条形码内容

注意:H5端不支持此功能,会返回错误提示,建议引导用户使用小程序或App扫码。