showScanCode
调起扫码功能,支持小程序和App端。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.scanCode | UniApp['scanCode'] | 扫码 API |
deps.log | Console['log'] | 日志输出 |
deps.error | Console['error'] | 错误输出 |
deps.warn | Console['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
}参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
options | ScanCodeOptions | 否 | {} | 扫码选项 |
options.onlyFromCamera | boolean | 否 | false | 是否只允许从相机扫码 |
options.scanType | ('qrCode' | 'barCode')[] | 否 | ['barCode', 'qrCode'] | 扫码类型 |
options.autoDecodeCharSet | boolean | 否 | false | 是否自动识别字符编码 |
deps | ShowScanCodeDeps | 是 | - | 依赖注入对象 |
返回值
| 类型 | 说明 |
|---|---|
Promise<ScanCodeResult> | Promise,成功时返回扫码结果,包含扫码内容、类型、字符编码等信息 |
工作原理
- 环境检测:检查当前是否为小程序或App环境
- 平台适配:
- 小程序端:使用
uni.scanCode - App端:使用
uni.scanCode - H5端:不支持,返回错误提示
- 小程序端:使用
- 调起扫码:调用对应平台的扫码接口
- 返回结果:返回扫码结果,包含二维码/条形码内容
注意:H5端不支持此功能,会返回错误提示,建议引导用户使用小程序或App扫码。