美洽怎么设置访客端聊天窗口震动强度调节?
美洽后台一般只给到访客端是否启用震动或声音的开关,并不会直接提供“震动强度”滑块。要改变访客感受,有三条常用路径:使用后台开关控制提醒、在网页端用Vibration API通过时长/节奏模拟强弱,或在移动端(Android/iOS)通过SDK拦截消息并调用系统震动接口做精细化控制。下面我会把每条路的原理、操作步骤、代码示例、优缺点和注意事项一条条讲清楚,便于你判断、实施或与开发协作落地。更好落地

先把基本概念讲清楚:震动强度是谁能控制?
简单来说,访客端的“震动”受两部分影响:一是平台(美洽)能否把“是否震动”这一选项下发或触发;二是终端(浏览器或手机系统)是否允许并且提供了精细的震动控制能力。把它比作“铃声”:后台可以决定要不要响,但到底响多大、振幅多强,往往是手机/浏览器和系统API决定的。
要点回顾
- 后台开关:多数客服平台(含美洽)会在管理控制台提供“通知/震动/声音”开关,用来开启或关闭访客端提醒。
- 网页端(浏览器):只能用 Vibration API(navigator.vibrate),可以控制时长和节奏,但无法直接控制振幅强弱。
- 移动端原生(Android/iOS):能做到最细的控制:Android 自 API 26 起支持按振幅(amplitude)控制;iOS 用触觉引擎(UIImpactFeedbackGenerator 等)可以选择轻/中/重的类型,但不直接给数值振幅。
美洽管理后台:先看最简单的开关能否满足需求
如果你的目标只是“让访客端有或没有震动”,先在美洽后台找相关设置通常最省力。不同版本的后台页面可能名称和位置略有差异,但常见路径类似:
- 登录美洽管理后台 → 找到“设置”或“渠道/窗口设置” → 寻找“访客端提醒/消息提醒/通知”项。
- 检查是否有“开启震动”或“开启声音/震动”的复选项,开就行,关就不震动。
说明:很多平台把“声音”和“震动”放在一起做为提醒策略。如果后台只提供开关而没有强度调节,那就不能通过后台直接改变震动强弱。
网页端(H5 / 小程序内嵌网页):用 Vibration API 模拟强弱
网页端是最常见的访客端场景,但受限较多。浏览器提供的 Vibration API只能设置振动时长和节奏(pattern),并不支持振幅控制。你可以通过改变节奏来“模拟”强弱感。
适用场景
- 访客使用手机浏览器访问的情况(移动端为主)。
- 嵌入页面的美洽聊天窗口可以在收到消息时触发 JS 回调。
关键限制
- 部分浏览器(尤其 iOS Safari)不支持 Vibration API。
- 需要 HTTPS 环境和用户交互权限(某些浏览器要求先有用户动作)。
- 无法直接控制强度(振幅),只能用时长/间隔“伪装”。
实现思路与示例代码(网页)
步骤大致是:
- 在美洽前端 SDK 的消息回调处,检测到新消息时执行 navigator.vibrate(pattern)。
- 用不同的 pattern 表示不同“感觉”级别(如短促多次让人感觉强烈,长一次让人感觉柔和)。
// 简单示例(JS)
function vibrateByLevel(level) {
if (!('vibrate' in navigator)) return;
// level: 1(弱) / 2(中) / 3(强)
const patterns = {
1: [50], // 弱:短一次
2: [100, 30, 100], // 中:两次中间有短间隔
3: [200, 50, 200] // 强:两次较长
};
navigator.vibrate(patterns[level] || [100]);
}
// 在美洽消息回调里调用
meiqia.on('message', function(msg){
vibrateByLevel(2); // 按需选择级别或从设置读取
});
Android 原生:可以按振幅精细控制(推荐开发接入)
如果你的访客主要使用 Android App(或在 App 内嵌 webview),并且可以对接美洽移动 SDK,那么 Android 上能做到最细的控制。重点是:Android 从 API 26 开始有 VibrationEffect 支持振幅(0–255)。
实现思路
- 在美洽 Android SDK 的消息监听回调里,拦截“收到新消息”事件。
- 根据你的“强度设置”调用 Vibrator 与 VibrationEffect,传入不同 amplitude 值。
Android Kotlin 示例(API ≥ 26)
val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
fun vibrate(level: Int) {
// level: 1..3 映射到不同振幅
val amplitude = when(level) { 1 -> 40; 2 -> 120; else -> 220 }
val effect = VibrationEffect.createOneShot(200, amplitude) // 200ms,振幅
vibrator.vibrate(effect)
}
// 在美洽消息回调处
meiqia.setOnMessageReceivedListener { msg ->
vibrate(userSelectedLevel)
}
注意:需要在 AndroidManifest 中声明权限 <uses-permission android:name=”android.permission.VIBRATE”/>,这是 normal 权限,通常在安装时自动同意。
Android Java 示例(兼容处理)
Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
VibrationEffect e = VibrationEffect.createOneShot(150, 180);
v.vibrate(e);
} else {
v.vibrate(150);
}
iOS 原生:用触觉引擎选择“轻/中/重”类型
iOS 的触觉反馈(Taptic Engine)是通过 UIFeedbackGenerators 实现的。iOS 不提供数值形式的“振幅”,而是把体验分为若干类型(比如 light/medium/heavy),你可以把这些映射为“弱/中/强”。
实现思路
- 在美洽 iOS SDK 的消息回调中调用 UIFeedbackGenerator 或 UIImpactFeedbackGenerator。
- 根据用户设置选择不同的样式。
Swift 示例
import UIKit
func vibrate(level: Int) {
switch level {
case 1:
let g = UIImpactFeedbackGenerator(style: .light)
g.impactOccurred()
case 2:
let g = UIImpactFeedbackGenerator(style: .medium)
g.impactOccurred()
default:
if #available(iOS 13.0, *) {
let g = UIImpactFeedbackGenerator(style: .heavy)
g.impactOccurred()
} else {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
}
}
}
// 在美洽消息回调里调用
MeiqiaSDK.onMessage { msg in
vibrate(level: userSelectedLevel)
}
要点:iOS 的触感体验受设备硬件影响(不同机型的同一 style 感受不同),这是系统设计决定的,开发者只能在几个预设档位中选择。
把这些方案放在一起比较(便于决策)
| 方案 | 能否调强度 | 实现难度 | 优缺点 |
| 美洽后台开关 | 否(仅开/关) | 低 | 快速上线;无法调强度;非开发可控 |
| 网页端 Vibration API | 否(可用时长/节奏模拟) | 中等 | 无需原生开发;兼容性有限;iOS 支持差 |
| Android 原生 | 是(可按 amplitude 控制) | 中-高(需开发接入) | 最精细、可按需定制;需 App 或 webview 对接 |
| iOS 原生 | 有限(预设档位) | 中-高 | 触觉自然;受限于系统档位和设备差异 |
常见问题与实施细节(QA 栏)
- Q:能在浏览器里像原生那样精确设置振幅吗?
A:不能。浏览器端只能设置时长/节奏,且某些浏览器(尤其 iOS Safari)不支持。 - Q:Android 需要用户授权吗?
A:VIBRATE 是 normal 权限,不需要运行时授权,但需要在 Manifest 声明。 - Q:iOS 上不同机型的触感会一致吗?
A:不会。不同设备 Taptic Engine 的硬件差异会导致相同 style 感受略有差别。 - Q:美洽后台找不到“震动”设置怎么办?
A:产品版本不同位置不同,先在“消息提醒/窗口设置/访客端设置”里查找,找不到的话可联系美洽客服或查看最新版文档。
实施建议:如何选择与落地步骤(按优先级)
- 最省力(优先):先在美洽后台确认并开启访客端震动/声音开关,观察是否满足需求。
- 兼容性折中:若访客以网页浏览为主,可用 Vibration API 在前端通过节奏模拟不同感觉,并在美洽回调中调用,配合一个设置项供用户选择弱/中/强(只是体验上的差异)。
- 最精准(需要开发):如果有 App 或能改动小程序/原生集成,优先在 Android/iOS SDK 层面拦截消息并调用系统震动接口,Android 可用 amplitude,iOS 用触觉档位。
- 测试与灰度:上线前在多机型和多浏览器环境做 A/B 测试,注意 iOS 浏览器的不支持与不同 Android 设备的差异。
技术和协作注意事项(给产品/运营/开发的话)
- 产品侧:把“震动强度”设计成用户可选项前,先明确可支持的平台(仅支持原生、或也支持网页模拟)。
- 开发侧:在实现前列出目标设备/浏览器列表,准备降级方案(不支持振幅时回退为短振或静音)。
- 运营侧:震动是比较强烈的提醒手段,注意不要在深夜或需要安静场景频繁触发,可提供静音时间窗设置。
好——如果你要我帮你把具体方案变成任务清单(比如给开发的 PR 要求、给运营的设置说明、测试用例),可以告诉我你当前的场景:主要是网页还是 App?Android、iOS 哪个占比高?我就按那个优先级给出更具体的操作步骤和示例代码,免得大家做了很多不必要的工作。