美洽怎么设置访客端聊天窗口后台运行?
要让美洽访客端在后台也能接收并提示消息,单靠页面脚本不行,必须用系统级推送或原生 SDK:网页靠 Service Worker + Web Push(或美洽控制台的浏览器推送),移动原生靠美洽 SDK 配合 APNs/FCM,H5/小程序用各平台消息能力并在美洽后台完成相应配置。总体步骤是:申请通知权限、注册订阅或设备、在美洽后台配置推送证书/密钥、测试并在前台恢复会话。

先把问题说清楚:为什么“后台运行”不是一件简单的事
想象一下你的浏览器或手机像一台办公室电脑,页面脚本是坐在电脑前的人。人还能看屏幕、打字、接电话,但一旦你离开,电脑不会主动替你接电话——除非有专门的电话转接服务。同理,网页的 JavaScript 在标签页被切换、浏览器被最小化或页面被关闭时,会被浏览器限制或终止。只有系统级的通知(操作系统或浏览器的 Push)能在你不在当前页面时把消息送到你面前。
所以,当用户问“美洽怎么设置访客端聊天窗口后台运行”时,真正要解决的不是让页面一直在跑脚本,而是保证消息能在后台被接收并提示用户,然后在用户回到前台时恢复完整会话体验。实现路径取决于你的场景:网页、H5、原生 iOS/Android、还是微信/小程序。
总体思路(费曼式一句话说明)
无论在哪个平台,核心都一样:请求通知权限 → 让客户端注册为可接收推送的“目标”(浏览器订阅或设备 token)→ 在美洽或你自己的服务器上保存该目标 → 当客服或机器人发消息时,把消息通过推送服务发到目标 → 用户点通知或打开应用,恢复美洽会话窗口。
按场景分步讲清楚
一、网页(PC/移动浏览器)场景
网页场景是最常见但也最容易误解的:只嵌入美洽前端脚本并不能保证用户在切换标签页或锁屏时仍然收到消息提示。要让访客在后台也能收到通知,需要使用 Web Push(Service Worker + Push API)或借助美洽提供的浏览器推送能力(如果美洽后台支持)。
为什么要用 Service Worker + Web Push
- Service Worker:是浏览器在后台运行的脚本,可以接收推送事件并显示通知,即使页面没有打开。
- Push API / Web Push:浏览器的推送通道,消息通过推送服务(如 Google、Mozilla 的推送网关)投递到用户设备。
基本实现流程(网页)
- 1. 在页面中请求 Notification 权限(Notification.requestPermission())。
- 2. 注册 Service Worker(navigator.serviceWorker.register(‘/sw.js’))。
- 3. 使用 serviceWorkerRegistration.pushManager.subscribe() 获取订阅对象(包含 endpoint 和密钥),将订阅信息上报给后端或美洽。
- 4. 在美洽后台或你自己的服务器上保存订阅,并在客服发消息时把消息转为 Web Push,推送到订阅的 endpoint(需要 VAPID 公私钥,或通过美洽代送)。
- 5. Service Worker 收到 push 时调用 self.registration.showNotification() 显示通知;点击通知时打开/聚焦页面并把会话信息传给前台脚本以恢复聊天窗口。
示例:关键代码片段(思路级,不一定是美洽专属 API)
页面注册和订阅(示意)
if ('serviceWorker' in navigator) {
const reg = await navigator.serviceWorker.register('/sw.js');
const sub = await reg.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: VAPID_PUBLIC_KEY });
// 把 sub(JSON)发送到你的服务器或美洽后台
}
Service Worker 接收并显示通知(/sw.js,示意)
self.addEventListener('push', event => {
const data = event.data ? event.data.json() : {};
event.waitUntil(self.registration.showNotification(data.title, { body: data.body, data: data }));
});
self.addEventListener('notificationclick', event => {
event.notification.close();
event.waitUntil(clients.openWindow('/chat?fromPush=1'));
});
要注意的点(坑与解法)
- 浏览器兼容性:Safari 对 Web Push 的支持与其他浏览器不同,需要单独处理(苹果的 Web 推送机制与 VAPID 略有不同)。
- HTTPS 强制:Service Worker 和 Push 要求通过 HTTPS 提供页面和 SW 文件。
- 订阅管理:订阅会过期或被用户撤销,要定期同步并在失败时重新订阅。
- 推送速率与内容:不要发送过多通知,遵守消息简洁和合规要求,避免被用户屏蔽。
二、原生移动应用(iOS / Android)
在原生 App 场景,做到“后台能接收消息并提示”是最自然的:原生系统有成熟的推送机制(APNs、FCM)。美洽提供移动 SDK,用来在用户打开应用时直接展示会话界面,并通过推送在后台唤醒用户。
基本实现流程(原生)
- 1. 在美洽后台或控制台配置推送所需的证书或密钥:上传 APNs 证书(iOS)、设置 FCM Server Key(Android)或在控制台填写相关信息。
- 2. 在移动应用中集成美洽提供的 SDK(iOS、Android),并在应用启动时初始化 SDK。
- 3. 在 App 启动时向系统注册推送,获取设备 token(iOS 的 deviceToken、Android 的 FCM token),并把 token 上报给美洽 SDK 或你自己的后端,由美洽保存为该访客的推送目标。
- 4. 当客服发来消息,美洽通过 APNs/FCM 推送通知到设备;点击通知或在应用内收到推送后,调起美洽会话页面,展示消息。
iOS 关键点
- 上传 APNs 证书或使用 Token 机制(推送证书或 Key)到美洽控制台。
- 在 App 中实现 UNUserNotificationCenterDelegate,处理通知授权、前台通知展示和点击事件。
- 注意 iOS 的后台执行限制:如果想在后台处理消息(例如自动更新会话状态),需要使用静默推送(content-available:1),但这受系统限制,可能被限制推送频率。
Android 关键点
- 使用 FCM(Firebase Cloud Messaging)或厂商推送(小米、华为等)以提高可靠性。
- 将 FCM token 上报给美洽;在消息端配置好 Server Key 或用美洽的推送中转。
- 注意 Android 8+ 的通知渠道(Notification Channel)配置,保证通知能正常显示且带有合适优先级。
三、H5(嵌入到移动浏览器)和微信/小程序场景
这类场景比较碎,往往受制于宿主平台的能力。H5 在移动浏览器中仍然可以用 Web Push(受浏览器限制),但很多移动浏览器对 Web Push 的支持不如 PC。微信内置浏览器对 Service Worker 支持有限。
- H5 页面:尽量诱导用户下载或打开原生 App,或使用公众号/小程序渠道来确保通知能力。
- 微信公众号:可以借助公众号模板消息或客服消息(需用户关注并授权)来通知用户。
- 微信小程序:小程序有自己的消息与订阅消息机制,可以在美洽与小程序间做对接或利用公众号消息来提醒。
在美洽后台需要做哪些配置(通用步骤)
大致在美洽控制台要完成这些事,实际界面可能会随产品迭代变化,但逻辑相同:
- 1. 启用推送/消息提醒功能(浏览器推送、移动推送、或第三方渠道)。
- 2. 上传或填写推送证书与密钥:APNs 证书或 Key(iOS)、FCM Server Key(Android)、如果支持 Web Push,则上传或填写 VAPID 公钥等。
- 3. 配置通知模板或推送内容策略(例如推送标题、摘要、跳转链接)。
- 4. 设置访客与设备的绑定策略(确定当访客登录/识别后设备 token 如何与访客会话关联)。
- 5. 测试推送并查看日志,以便排查失败原因。
常见问题与排查方法
问题:用户不收到通知
- 确认用户是否授权:浏览器的 Notification 权限、或系统通知权限是否被禁用。
- 检查订阅/设备 token 是否正确上报并在美洽后台存在。
- 查看推送服务返回的错误:APNs / FCM 会返回具体错误代码(证书过期、token 无效等)。
- 浏览器场景:检查 Service Worker 是否注册成功,推送订阅是否存活。
问题:通知收到但点击没有打开聊天窗口
- 确保通知携带了跳转参数(例如会话 id),并且 Service Worker 在 notificationclick 中使用 clients.openWindow 或通过 postMessage 通知前台页面恢复会话。
- 前台页面需要在可用时读取 URL 参数或监听 message,调用美洽前端脚本打开会话。
问题:推送频率、展示样式或提醒被系统限制
- 移动系统对频繁静默推送有严格限制,尽量把静默推送用于数据同步,用户可见通知用于提醒。
- Android 必须配置通知渠道,且用户可手动关闭渠道;要有优雅的退路。
测试方法:一步步验证你的配置是否生效
- 本地开发准备:保证页面或 App 运行在 HTTPS 或受信任环境。
- 订阅测试:在浏览器中注册 Service Worker 并打印订阅结果,确认 endpoint 与 keys 存储到服务器。
- 单条推送测试:使用你的服务器或第三方工具对该订阅/设备 token 发起单条推送,查看是否送达并是否触发 notificationclick。
- 完整流程测试:客服在美洽后台发消息或通过测试脚本模拟客服消息,观察客户端从收到通知到打开会话的完整链路。
- 日志收集:收集设备端和服务端日志(推送返回值、SW 错误、前台脚本错误)以便排查。
安全与合规性注意
- 确保推送内容不包含敏感数据,通知摘要应慎用用户隐私信息。
- 在请求通知权限时给出明确的说明,告诉用户为什么要开启通知及会收到哪些类型的推送。
- 遵守地方法律和平台规则,尤其是涉及商业短信、模板消息、或第三方数据传输时。
对比表:各方案优缺点一览
| 方案 | 能否在后台接收 | 实现难度 | 适用场景 |
| Web Push(Service Worker) | 是(浏览器支持时) | 中等(需 SW、VAPID、后端) | PC、支持 Web Push 的移动浏览器 |
| 原生推送(APNs/FCM)+ 美洽 SDK | 是(系统级推送) | 中等偏高(需证书、SDK 集成) | iOS/Android 原生 App |
| 公众号/小程序消息 | 取决于平台能力 | 中等(受平台约束) | 微信公众号、微信小程序用户群体 |
| 长轮询 / WebSocket(页面在前台) | 否(页面关闭或被限制时不可用) | 低(实现简单) | 页面必须保持打开且活跃的场景 |
实践小贴士(那些实操中常见但不太容易想到的事)
- 用户体验优先:通知文字要简短、包含必要上下文,点开后尽量直达具体会话或消息,而不是仅仅打开首页。
- 退路设计:当推送失败,仍要在用户下次打开页面时通过 API 拉取未读消息并做提示。
- 多渠道并行:对重要消息可以同时使用推送与短信/邮件做兜底,但注意频率和合规。
- 分层授权:先用温和的方式请求权限(解释用途),再在用户接受后触发订阅,以降低被拒风险。
- 留心运营规则:有些平台(微信、苹果)对模板消息和商业消息有严格限制,提前了解并规划。
如果你在配置过程中遇到具体问题,如何定位和求助
- 先看美洽控制台的推送/消息设置页面,找推送证书、key、日志入口。
- 在客户端开启详细日志(SW 控制台日志、App 的推送回调日志),把失败返回码记录下来。
- 对照 APNs / FCM 文档查看错误码含义,很多问题是证书或 token 无效导致的。
- 必要时联系美洽客服或技术支持,提供你的应用包名/证书截图、失败的推送返回以及相关日志,能加快排查。
说到这儿,我想起一个常见的实际场景:一个电商把美洽加到网页上,客服抱怨“用户不在线看不到我们回复”。原因往往不是美洽“没法后台运行”,而是没有把“会话通知”接入系统级推送;把前端、Service Worker、后端推送和美洽后台连起来,问题就迎刃而解了。按上面流程一步步来,通常能把“后台接收并提示消息、点击恢复会话”这件事做好;中间的细节(证书、VAPID、渠道配置)按平台分别处理,遇到怪异问题再逐条排查。