一、概述
双向视频类产品中,设备端主动发起呼叫的场景分为两种:设备当前无用户访问和设备当前有用户访问。两种场景的处理流程不同,需根据实际连接状态选择对应实现方式,核心依赖 TUTK P2P 音视频传输API和消息推送通道。
二、场景一:设备当前无用户访问
设备未被任何APP连接时,因手机端通常不携带固定UID,需通过消息服务器发起呼叫请求,引导用户打开APP并建立P2P连接,进而实现双向视频。
支持的消息推送通道:
支持的消息推送通道:
- TUTK 原生:KPNS(TUTK 推送服务)
- 系统级推送:苹果 APNS(iOS)、谷歌 FCM(Android 海外)
- 国内厂商推送:华为 HMS Push、小米 MI Push、OPPO Push、vivo Push 等
- 自定义推送:厂商自建消息通道

图 1:设备无用户访问时的呼叫流程示意图
核心流程:
- 设备上线报到(可选):设备启动后连接 TUTK 服务器完成上线(设备通常长期在线,此步骤非必需),同步设备状态和绑定的APP账号信息。
- 设备广播呼叫消息:设备触发呼叫事件(如触发传感器、用户按键),通过预设的消息通道(如 KPNS/APNS)向绑定的手机端发送呼叫通知,消息需包含设备 UID、呼叫类型等关键信息。
- 用户响应呼叫:手机端收到推送消息,用户点击消息后唤醒 APP(需配置APP的推送唤醒权限)。
- APP 发起 P2P 连线:APP 启动后,读取消息中的设备 UID,调用 TUTK P2P SDK 接口发起连接请求,完成身份认证和 P2P 隧道建立。
- 双向音视频传输:P2P 连线成功后,APP 与设备端分别启动音视频采集、编码,通过 SDK 提供的音视频传输API互相发送数据,实现实时通话。
- 通话结束挂断:任意一方触发挂断操作,APP 和设备端停止音视频采集,释放 P2P 连接资源。
三、场景二:设备当前有用户访问
设备已被 APP 成功连接(用户正在查看实时视频或已建立会话),此时无需通过消息推送(也可以设计为同时呼叫其他绑定此设备的用户,参考场景一),直接通过 P2P 通道发送控制指令即可触发双向视频切换。
核心优势:
核心优势:
- 无需依赖外部消息通道,响应速度快;
- SDK v3.3+ 支持全双工通道,无需额外建立新通道,直接使用现有 0 通道传输音视频数据。
核心流程:
- 设备触发呼叫事件:设备需发起双向视频(如用户按下通话键),此时已存在有效的 P2P 连接(APP 已访问设备)。
- 设备发送控制指令:设备通过 avSendIOCtrl 接口发送双向视频呼叫指令(如 IOTYPE_USER_IPCAM_CALL_REQ)给已连接的 APP。
- APP 响应指令:APP 通过 avRecvIOCtrl 接口接收指令后,自动启动本地音视频采集、编码模块。
- 全双工音视频传输:APP 与设备端通过现有 P2P 通道(0 通道),使用音视频传输API互相发送数据,实现双向通话(无需额外创建通道)。
- 通话结束/切换:挂断后,APP 可切换回单向查看模式(停止本地音视频发送),或直接释放连接。
四、对接流程
P2P SDK 为双向视频呼叫流程的核心依赖,需根据场景组合使用,具体请参考以下章节:
