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

Android集成Dolby Vooxet SDK 应用关闭/被杀时收不到来电通知咨询

Dolby.io(原Voxeet)SDK 应用杀进程/关闭状态下来电通知实现方案

核心前提:Dolby 客户端SDK本身仅在应用进程存活时维持信令长连接,进程被系统回收或手动关闭后,SDK连接直接断开,不存在客户端侧直接接收来电的可能,必须走「服务端事件监听+系统级推送+唤起拉起通话」的链路实现,任何尝试靠客户端保活实现的方案在iOS、国内定制安卓ROM上都会被系统拦截,稳定性为0。

实现链路总览

  • 主叫方通过SDK发起呼叫、邀请指定用户加入会议
  • Dolby服务端将呼叫邀请事件推送给你的自有业务服务端
  • 业务服务端通过系统级官方推送通道,向被叫用户的设备下发来电通知
  • 设备系统通道在应用进程不存活的状态下接收通知,用户点击通知唤起应用,拉取通话参数完成接听

分步实现细节

1. 服务端配置Dolby事件订阅

  • 在Dolby.io控制台开启Webhook事件回调,必须订阅呼叫邀请、会议状态变更类事件,重点关注用户被邀请加入会议的事件回调
  • 回调内容里会携带核心参数:被邀请用户ID、会议唯一ID、主叫用户信息、邀请过期时间,这些参数需要缓存到业务服务端,用于后续推送组装
  • 额外订阅通话取消、用户接听类事件,用于后续通知的撤销逻辑

2. 客户端接入系统级推送通道

  • iOS端:如果需要实现系统级来电体验,接入PushKit的VOIP推送,配合CallKit实现原生来电UI;普通APNs推送延迟高,不适合实时来电场景
  • Android端:海外场景接入FCM,国内场景必须逐家接入华为、小米、OPPO、vivo、魅族的官方厂商推送,不要依赖第三方推送的通用保活能力——只有厂商官方推送通道是系统级白名单,应用被杀后依然可以稳定收到消息
  • 客户端提前创建来电专属通知渠道,配置高通知优先级、全屏展示权限,首次启动时引导用户开启忽略电池优化、通知弹窗权限,避免通知被系统折叠或拦截

3. 推送下发与通话拉起逻辑

  • 业务服务端收到Dolby的呼叫邀请回调后,根据被邀请用户ID,匹配该用户所有登录设备对应的推送token,组装来电推送 payload:必须携带会议ID、主叫昵称/头像、邀请唯一标识字段
  • 收到呼叫邀请后立刻通过对应推送通道下发通知,同时启动超时计时器:如果60秒内未收到被叫用户的接听/拒接回执,或者收到Dolby侧的通话取消事件,立刻下发取消通知,让客户端撤销已经弹出的来电提醒
  • 设备收到来电推送时:
    • 如果应用进程存活,直接触发SDK的来电提醒逻辑,弹出来电接听界面
    • 如果应用进程已被杀,用户点击通知后自动唤起应用进程,应用启动完成后优先初始化Dolby SDK,从推送参数中读取会议ID,调用SDK接口拉取对应会议的完整信息,弹出接听/拒接界面
    • 用户点击接听后,直接调用SDK的加入会议接口进入通话,不需要额外走登录后的首页跳转逻辑

4. 异常兼容处理

  • 多设备登录场景:同一个用户ID在多台设备登录时,所有设备都要下发来电通知,任意一台设备接听后,立刻给其余设备下发取消来电的指令,避免多台设备同时响铃
  • 权限校验:客户端拉起通话前,校验当前登录的用户ID和推送携带的被邀请人ID是否一致,避免账号切换导致的串话问题
  • 弱网兼容:如果应用启动后拉取会议信息失败,自动重试2-3次,重试失败提示用户来电已过期

常见踩坑

  • 不要指望Dolby SDK自带的后台模式能覆盖杀进程场景:不管是Android还是iOS,应用进程被手动杀掉或者被系统回收后,SDK的所有连接、监听逻辑都会停止运行,没有任何例外
  • Android 12及以上版本必须申请USE_FULL_SCREEN_INTENT权限,否则来电通知无法弹出全屏界面,只会在状态栏显示一条普通消息
  • iOS端VOIP推送必须严格和CallKit配合使用,单独使用VOIP推送拉起应用不上报CallKit事件,会被系统判定为违规,直接封禁推送权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:51:21