uni-app如何调用手机震动反馈

秋枫小哥_7533

秋枫小哥_7533

2026-06-10

379人浏览

原创

别用 navigator.vibrate;真机有效且跨端可用的只有 uni.vibrateshort 和 uni.vibratelong,但需按平台特性调用,ios/android 行为差异极大。

直接结论:别用 navigator.vibrate,它在 uni-app 里基本等于摆设;真机有效、跨端可用的只有 uni.vibrateshort 和 uni.vibratelong,但必须按平台特性调用,且 ios/android 行为差异极大。

uni.vibrateShort / uni.vibrateLong 为什么有时没反应

这两个 API 是 uni-app 官方封装的、唯一真正打通原生震动能力的接口,但失效原因和平台强相关:

  • iOS 真机不震?先确认「设置 → 辅助功能 → 触感反馈」已开启;静音开关拨下时,uni.vibrateShort 会彻底静默,连 fail 回调都不会触发
  • Android 没反应?检查 manifest.json 是否在 "androidPermissions" 里声明了 "android.permission.VIBRATE";国产 ROM(如小米、华为)还需手动进「应用通知权限 → 振动提醒」打开开关
  • 打包成 App 后仍无效?确保不是 H5 或小程序环境误调——uni.vibrateShort 在 H5 和小程序中完全不生效,调用即丢弃

Android 和 iOS 震动行为根本不同

不能把震动当成“统一播放一段毫秒波形”,iOS 和 Android 底层机制完全不同:

  • Android 的 uni.vibrateShort 实际调用系统 Vibrator,约 15ms 短震,响应快、可高频触发(但需间隔 ≥50ms)
  • iOS 的 uni.vibrateShort 并非“短时间震动”,而是触发系统预设的轻量触感样式(Taptic Engine),它不接受毫秒参数,也不支持自定义时长;传 uni.vibrateShort({ duration: 10 }) 会被忽略
  • uni.vibrateLong 在两端都固定为 400ms 左右,iOS 上表现为一次中等强度触感,Android 上是明确马达震动

连续点击或节奏震动怎么写才不翻车

震动没有 Promise、没有完成回调,纯异步且无状态,连点场景下极易错乱:

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载
  • 不要用 setTimeout 手动拼“滴滴-滴”节奏——iOS 会直接丢弃后续调用,Android 可能合并成一次长震或被系统限频
  • 节流是必须的:两次 uni.vibrateShort 调用间隔至少 50ms,建议用 lastVibrateTime 记录 + 时间差判断
  • 想模拟复杂触感(比如按钮按下+释放双反馈),iOS 必须换原生方案:plus.ios.importClass("UIImpactFeedbackGenerator"),但仅限 App 端,且需 impact.prepare() + impact.impactOccurred() 配合
  • H5 端放弃震动,改用 uni.showToast({ icon: 'success', duration: 80 }) 或 CSS 动画反馈更实际

manifest.json 和权限配置漏掉就全白干

很多开发者卡在“代码没错却没震动”,问题出在构建配置和系统级授权链上:

  • Android 12+(API 31+)强制要求在 manifest.json 的 "androidPermissions" 数组中显式添加:"android.permission.VIBRATE",否则打包后静默失败,无任何提示
  • iOS 不需要声明权限,但用户必须手动开启「触感反馈」——这个开关不在应用内弹窗能控制,只能引导用户去系统设置
  • App 端使用 plus.device.vibrate(比如传数组实现模式震动)前,必须确保 plus 环境就绪:if (typeof plus !== 'undefined' && plus.device),且只在 onReady 或 onLoad 后调用

震动不是“写了 API 就响”,它是平台能力、系统设置、用户习惯、ROM 厂商策略四层叠加的结果。最稳的做法是:用 uni.vibrateShort 做基础点击反馈,加节流 + 用户引导文案;复杂触感需求直接上原生插件,别硬啃跨端封装的边界。真机测试前,先看一眼手机设置里的震动开关有没有开。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

uni-app

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2483

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5363

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6410

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5998

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

863

5

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

2026.10.15

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习