# 设备互通

# 简介

快速开始 章节中我们介绍了两个 Cat.1 设备之间实现一对一通话的的集成过程。本章节将简单介绍如何实现 Cat.1 和 iOS 设备之间的一对一音视频通话。主要分为 iOS 手机作为主叫Cat.1 设备作为主叫两个场景,两个场景下的集成方式稍有不同。

# iOS 手机作为主叫

在手机作为主叫,Cat.1 手表作为被叫的情况下,时序图如下:

asr_phone2watch_ios

Cat.1 设备的集成参考 快速开始 。手机端作为主叫时的具体集成步骤如下:

  1. 在发起通话前,调用 generateByMode (opens new window) 函数生成媒体配置参数 JCCallMediaConfig (opens new window) 对象。传入的参数即为媒体模式,不同的终端设备需要选择其对应的模式。

    终端 模式
    iOS 手机 选择 JCCallMediaConfigModeIOT 模式
    Cat.1 设备 /
  2. 设置 JCCall 对象的 mediaConfig (opens new window) 属性。

  3. 调用 call (opens new window) 发起通话。

    其中 call 函数的第三个参数 callParam 需要传入自定义的唯一 ticket 以便服务器精确标识会话。ticket (opens new window) 是指开发者自定义的 64 位的唯一 ID。对呼时, 必须使用相同的ticket, 以便服务器精确标识会话。

  4. 在发起通话的同时发送长连接至被叫,通知被叫(需要开发者自行实现)。

  5. 调用 startSelfVideo (opens new window) 创建本地视频画面,SDK 会发送手机端的视频数据到服务器。

  6. 若对呼成功则触发 onCallItemUpdate (opens new window) 回调,通话通道状态变为 JCCallStateConnecting (opens new window)

  7. 在服务器收到来自手表端的视频数据后,服务器会向手机端发送视频数据。此时手机端会再次触发 onCallItemUpdate (opens new window) 回调,通话通道状态变为 JCCallStateTalking (opens new window),调用 startOtherVideo (opens new window) 渲染远端视频画面。

# Cat.1 设备作为主叫

在手机作为主叫,Cat.1 设备作为被叫的情况下,时序图如下:

asr_watch2phone_ios

Cat.1 设备的集成参考 快速开始 。手机端作为被叫时的具体集成步骤如下:

  1. 在发起通话前,调用 generateByMode (opens new window) 函数生成媒体配置参数 JCCallMediaConfig (opens new window) 对象。传入的参数即为媒体模式,不同的终端设备需要选择其对应的模式。

    终端 模式
    iOS 手机 选择 JCCallMediaConfigModeIOT 模式
    Cat.1 设备 /
  2. 在收到来自手表端的长连接通知,并触发了 onCallItemAdd (opens new window) 回调时,调用 call (opens new window) 应答通话。

    (在回调中调用 call 函数将提前接通流程,减少画面渲染过程中的时间) 其中 call 函数的第三个参数 callParam 需要传入自定义的唯一 ticket 以便服务器精确标识会话。ticket (opens new window) 是指开发者自定义的 64 位的唯一 ID。对呼时, 必须使用相同的ticket, 以便服务器精确标识会话。

  3. 若对呼成功则触发 onCallItemUpdate (opens new window) 回调,通话通道状态变为 JCCallStateConnecting (opens new window)

  4. 调用 startSelfVideo (opens new window) 创建本地视频画面,SDK 会发送手机端的视频数据到服务器。

  5. 在服务器收到来自手表端的视频数据后,服务器会向手机端发送视频数据。此时手机端会再次触发 onCallItemUpdate (opens new window) 回调,通话通道状态变为 JCCallStateTalking (opens new window),调用 startOtherVideo (opens new window) 渲染远端视频画面。