You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用apiRTC实现应用后台或已关闭状态下的呼入通话接收

ApiRTC JS SDK实现后台/进程关闭状态呼入通话接收方案

基础前提

Web端应用在后台运行或者进程被销毁时,主线程的ApiRTC SDK实例会被系统节流或者直接销毁,无法主动监听信令,因此需要依赖Service Worker和系统推送能力实现唤醒接收。

一、后台运行状态(页面未关闭、仅切后台/锁屏)

按以下步骤实现:

  • 将ApiRTC的信令监听逻辑迁移到Service Worker中,避免主线程后台节流导致信令丢失
  • 提前向用户申请通知权限、后台同步权限,确保Service Worker可以正常弹出系统通知
  • Service Worker接收到incomingCall呼入事件时,直接触发系统级通知,用户点击通知即可跳转回通话页面完成接听
    示例代码如下:
// service-worker.js 中监听呼入事件
self.addEventListener('apirtc.incomingCall', (event) => {
  const callInfo = event.detail;
  event.waitUntil(
    self.registration.showNotification(`${callInfo.callerName} 发起通话请求`, {
      body: '点击即可进入通话页面接听',
      data: callInfo
    })
  );
});

// 监听通知点击事件,拉起通话页面
self.addEventListener('notificationclick', (event) => {
  event.notification.close();
  event.waitUntil(
    clients.openWindow(`/answer?callId=${event.notification.data.callId}`)
  );
});

二、应用完全关闭状态(进程销毁、页面已关闭)

该场景下原有SDK连接完全断开,需要依赖系统推送通道实现唤醒:

  • 对接对应运行环境的推送服务:Web端对接浏览器厂商推送服务(Chrome FCM、Safari APNs),套壳应用对接各端系统推送通道
  • 用户登录时,将当前设备的推送令牌与ApiRTC用户ID绑定存储到你的业务服务端
  • 呼入触发时,业务服务端先校验对端用户的SDK在线状态,若离线则调用推送接口下发呼入通知
  • 用户点击推送通知唤醒应用后,立刻初始化ApiRTC SDK并携带呼叫ID拉取通话信息,完成后续接听流程

注意:移动端浏览器对后台Service Worker的存活时间通常限制在30分钟以内,长时间后台监听必须依赖系统推送实现,仅靠Service Worker保活无法实现稳定的呼入接收。


内容的提问来源于stack exchange,提问作者Ian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:24:03