---
name: "scanCode"
mode: "kit"
versionRequirements:
  - { name: "BaseKit", version: "2.3.2" }
  - { name: "@ray-js/ray", version: "0.3.23" }
platform:
  - "iOS"
  - "Android"
async: true
title: "scanCode - 调起客户端扫码界面进行扫码"
---

## scanCode

> [VERSION] BaseKit >= 2.3.2 | @ray-js/ray >= 0.3.23

> [PLATFORM] iOS, Android

> ⚡ **支持 Promise 调用** — 不传 success / fail / complete 回调时，该方法返回 Promise。

### 描述

调起客户端扫码界面进行扫码 注意：Android返回的数据中，只有result字段可用，其他字段无意义。

### 参数

| 属性 | 类型 | 必填 | 默认值 | 最低版本 | 描述 |
| --- | --- | --- | --- | --- | --- |
| `onlyFromCamera` | `boolean` | 否 | `false` | `2.3.2` | 是否只能从相机扫码，不允许从相册选择图片 |
| `isShowActionTitle` | `boolean` | 否 | `true` | `3.3.3` | 是否显示动作标题(仅Android生效) |
| `isShowTorch` | `boolean` | 否 | `false` | `3.3.3` | 是否显示闪关灯(仅Android生效) |
| `isShowKeyboard` | `boolean` | 否 | `false` | `3.12.0` | 是否显示输入设置代码 |
| `keyboardBean` | `KeyboardBean` | 否 | - | `3.12.0` | 输入设置文案修改 |
| `customTips` | `string` | 否 | - | `3.3.3` | 自定义提示标语(仅Android生效) |
| `scanType` | `string[]` | 否 | `["barCode", "qrCode"]` | `2.3.2` | 扫码类型 |
| `complete` | `() => void` | 否 | - | - | 接口调用结束的回调函数（调用成功、失败都会执行） |
| `success` | `(params: Object) => void` ↓见下方 | 否 | - | - | 接口调用成功的回调函数 |
| `fail` | `(params: Object) => void` ↓见下方 | 否 | - | - | 接口调用失败的回调函数 |

#### success 回调参数

| 属性 | 类型 | 最低版本 | 描述 |
| --- | --- | --- | --- |
| `result` | `string` | `3.2.6` | 所扫码的内容 |
| `scanType` | `string` | `3.2.6` | 所扫码的类型 |
| `charSet` | `string` | `3.2.6` | 所扫码的字符集 |
| `path` | `string` | `3.2.6` | 当所扫的码为当前小程序二维码时，会返回此字段，内容为二维码携带的 path (不一定会有返回值) |
| `rawData` | `string` | `3.2.6` | 原始数据，base64编码 |

#### fail 回调参数

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `errorMsg` | `string` | 错误信息 |
| `errorCode` | `string \| number` | 错误码 |
| `innerError` | `Object` | 错误扩展 |

##### fail(params).innerError 的属性

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `errorCode` | `string \| number` | 错误扩展码 |
| `errorMsg` | `string` | 错误扩展信息 |


### 引用对象

##### `interface` KeyboardBean

| 属性 | 类型 | 最低版本 | 描述 |
| --- | --- | --- | --- |
| `title` | `string` | `3.12.0` | 键盘标题&&输入页标题 |
| `placeholder` | `string` | `3.12.0` | 输入页输入框提示语 |
| `desc` | `string` | `3.12.0` | 输入页输入描述 |
| `actionText` | `string` | `3.12.0` | 输入页操作按钮文案 |


### 示例代码

#### Demo

```tsx
import { scanCode } from '@ray-js/ray'

// 调起客户端扫码界面，扫码后回调返回内容与类型（Android 仅 result 字段有效）
scanCode({
  onlyFromCamera: false,
  isShowActionTitle: true,
  isShowTorch: false,
  isShowKeyboard: false,
  scanType: ["barCode", "qrCode"],
  success: data => console.log("扫码结果：", data.result, data.scanType),
  fail: error => console.error(error),
});
```
