前言

最近在用 uni-app 开发一款 app,需求中有一项是点击 触感反馈,查阅了 uni-app 相关文档,发现并没有对应的 API,最开始尝试用 震动 的方式来模拟 触感反馈 , 但是感觉效果并不好,因为 iPhone 并不支持 短震动(15ms),只支持 长震动(400ms)

在这里记录一下最后的处理方式。

IOS 开启触感反馈

iPhone 使用触感反馈需要手机支持并且在设置中打开,否则并不能触发。核心代码如下:

1
2
3
4
5
6
7
var UIImpactFeedbackGenerator = plus.ios.importClass(
'UIImpactFeedbackGenerator'
)
var impact = new UIImpactFeedbackGenerator()
impact.prepare()
impact.init(1)
impact.impactOccurred()

只需要在需要触感反馈的地方,把这段代码复制进去就好!

Android 触感反馈

安卓的触感反馈,我目前使用 短震动 进行了模拟,具体可以查看 uni-app 官方文档。 当然插件市场也有人提供了原生的触感反馈的插件:触感反馈

实例代码

在点击底部 Tabbar 的时候,触发触感反馈。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
onTabItemTap() {
// #ifdef APP-PLUS
if (uni.getSystemInfoSync().platform == "ios") {
let UIImpactFeedbackGenerator = plus.ios.importClass('UIImpactFeedbackGenerator');
let impact = new UIImpactFeedbackGenerator();
impact.prepare();
impact.init(1);
impact.impactOccurred();
}
if (uni.getSystemInfoSync().platform == "android") {
uni.vibrateShort({
success: () => {
console.log('点击震动');
}
});
}
// #endif
},