Skip to content

IHapticService 触觉反馈服务

触觉反馈服务提供跨平台的振动和触觉反馈能力,增强用户交互体验。

接口定义

IHapticService {
  // 预定义反馈
  impact(style: ImpactStyle): Promise<void>
  notification(type: NotificationType): Promise<void>
  selection(): Promise<void>
  
  // 自定义振动
  vibrate(pattern: number[]): Promise<void>
  
  // 能力查询
  isSupported(): Promise<boolean>
  getSupportedStyles(): Promise<ImpactStyle[]>
  
  // 控制
  enable(): void
  disable(): void
  isEnabled(): boolean
}

枚举定义

ImpactStyle

说明使用场景
light轻微反馈选择项目、轻触
medium中等反馈确认操作、切换
heavy强烈反馈重要操作、完成
soft柔和反馈滑动、拖拽
rigid硬质反馈碰撞、边界

NotificationType

说明使用场景
success成功通知操作完成、交易成功
warning警告通知需要注意、即将超时
error错误通知操作失败、验证错误

功能规范

冲击反馈

impact(style: ImpactStyle)

  • MUST 产生与 style 对应的触觉反馈
  • MUST 在不支持时静默失败
  • SHOULD 与视觉反馈同步触发
  • MAY 根据系统设置自动调整强度

通知反馈

notification(type: NotificationType)

  • MUST 产生与通知类型对应的触觉模式
  • MUST 区分 success/warning/error
  • SHOULD 使用系统预定义的反馈模式

选择反馈

selection()

  • MUST 产生轻微的选择反馈
  • SHOULD 用于列表选择、开关切换
  • SHOULD 频率限制避免过度振动

自定义振动

vibrate(pattern: number[])

  • MUST 按模式数组执行振动
  • 数组格式:[振动时长, 暂停时长, 振动时长, ...]
  • MUST 支持取消正在进行的振动
  • SHOULD 限制最大振动时长

使用场景

1. 交易成功

交易确认完成

调用 notification('success')

同时显示成功动画

2. 图案锁输入

用户输入每个数字

调用 impact('light')

图案错误时

调用 notification('error')

3. 下拉刷新

用户下拉到阈值

调用 impact('medium')

释放触发刷新

4. 长按操作

长按达到激活时间

调用 impact('heavy')

显示操作菜单

平台适配

平台实现方式精度
WebVibration API
DWEBdweb.haptic API
iOSUIImpactFeedbackGenerator
AndroidVibrationEffect

平台能力对照

能力WebDWEBiOSAndroid
impact styles部分
notification types
selection
custom pattern

配置选项

HapticConfig {
  enabled: boolean       // 全局开关
  respectSystemSetting: boolean  // 遵循系统设置
  intensityScale: number // 强度缩放 0-1
}

最佳实践

  1. 适度使用 - 避免过度振动造成骚扰
  2. 提供开关 - 允许用户禁用触觉反馈
  3. 配合视觉 - 触觉应与视觉反馈同步
  4. 考虑场景 - 重要操作使用强反馈,日常操作使用轻反馈
  5. 遵循系统 - 尊重系统级别的触觉设置

错误处理

错误类型说明处理方式
NotSupported设备不支持触觉静默忽略
Disabled用户已禁用静默忽略
InvalidPattern振动模式无效使用默认模式

可访问性

  • MUST 提供关闭触觉反馈的选项
  • SHOULD 与屏幕阅读器配合使用
  • SHOULD 在静音模式下仍可工作
  • MAY 根据用户偏好调整强度

Released under the MIT License.