uni-app 自定义基座真机触感(短振动)有效,打包成正式包后触感(短振动)不生效

uni-app 自定义基座真机触感(短振动)有效,打包成正式包后触感(短振动)不生效

操作步骤:

  • 打包正式包后触感(短振动)不生效

预期结果:

  • 打包正式包后触感(短振动)生效

实际结果:

  • 打包正式包后触感(短振动)不生效

bug描述:

  • 使用uni.vibrateShort(),自定义基座真机触感(短振动)有效,打包成正式包后触感(短振动)不生效,编译的版本是3.8.12,targetSdkVersion=30
信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 11
手机系统 Android
手机系统版本 Android 11
手机厂商 小米
手机机型 红米k40
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 CLI
CLI版本号 3.8.12

更多关于uni-app 自定义基座真机触感(短振动)有效,打包成正式包后触感(短振动)不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

请检查是否添加<uses-permission android:name="android.permission.VIBRATE"/>权限

更多关于uni-app 自定义基座真机触感(短振动)有效,打包成正式包后触感(短振动)不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中,自定义基座和正式包的行为可能会有所不同,尤其是在涉及到系统 API 调用时,比如触感反馈(短振动)。以下是一些可能的原因和解决方案:

1. 权限问题

  • 自定义基座:在开发阶段,uni-app 可能会自动处理一些权限问题,或者你的设备已经授予了相关权限。
  • 正式包:正式包可能需要显式声明和请求振动权限。

解决方案: 在 manifest.json 中确保已经声明了振动权限:

{
  "app-plus": {
    "permissions": [
      "android.permission.VIBRATE"
    ]
  }
}

2. API 调用方式

  • 自定义基座:在开发阶段,uni-app 可能会使用一些模拟或调试模式来调用系统 API。
  • 正式包:正式包中可能会直接调用系统 API,如果调用方式不正确,可能会导致功能失效。

解决方案: 确保你在代码中正确使用了 uni.vibrateShort 方法:

uni.vibrateShort({
  success: function () {
    console.log('振动成功');
  },
  fail: function (err) {
    console.log('振动失败', err);
  }
});

3. 设备兼容性

  • 自定义基座:在开发阶段,你可能在特定设备上测试,该设备支持振动功能。
  • 正式包:正式包可能会运行在不支持振动的设备上,或者设备的振动功能被禁用。

解决方案: 在调用振动功能之前,检查设备是否支持振动:

uni.getSystemInfo({
  success: function (res) {
    if (res.platform === 'android' && res.vibrateSupported) {
      uni.vibrateShort();
    } else {
      console.log('设备不支持振动');
    }
  }
});
回到顶部