构造函数

(bool) - call:video:callParam:
 
(bool) - term:reason:description:
 
(bool) - answer:video:
 
(bool) - mute:
 
(bool) - muteMicrophone:mute:
 
(bool) - muteSpeaker:mute:
 
(bool) - hold:
 
(bool) - audioRecord:enable:filePath:
 
(bool) - videoRecord:enable:remote:width:height:filePath:bothAudio:
 
(bool) - becomeActive:
 
(bool) - enableUploadVideoStream:
 
(bool) - sendMessage:type:content:
 
(NSString *__nullable) - getStatistics
 
(JCCallItem *__nullable) - getActiveCallItem
 
(bool) - sendDtmf:value:
 
(bool) - setRudpMode:
 
(bool) - getRudpMode
 

类方法

(JCCall *__nullable) + create:mediaDevice:callback:
 
(void) + destroy
 

属性

NSArray *__nullable callItems
 
int maxCallNum
 
bool termWhenNetDisconnected
 
JCCallMediaConfig *__nonnull mediaConfig
 

详细描述

一对一通话类

该类的所有实例方法在调用时需保证用户的登录状态为已登录

函数文档

◆ answer:video:

- (bool) answer: (JCCallItem *__nonnull)  item
video: (bool)  video 

接听

调用接口成功会收到 onCallItemUpdate 通知
另外还有两种情况也会收到 onCallItemUpdate 通知:1、若收到的是视频呼叫,而本端选择了音频接听 2、若此路通话不是活跃的,会将此路通话设为活跃通话。
调用接口失败会收到 onCallItemRemove 通知

参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
video针对视频呼入可以选择以视频接听还是音频接听
  • true: 视频接听
  • false: 音频接听
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ audioRecord:enable:filePath:

- (bool) audioRecord: (JCCallItem *__nonnull)  item
enable: (bool)  enable
filePath: (NSString *__nullable)  filePath 

开启/关闭通话录音

调用成功会收到 onCallItemUpdate 通知

开启通话录音,需要保证没有在录音也没有在录制视频
关闭通话录音,需要保证当前通话正在录音

参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
enable开启/关闭录音
  • true: 开启录音
  • false: 关闭录音
filePath录音文件的本地保存路径,由用户自行指定,需精确到文件名及格式,例如:/Documents/JuphoonCloud/audio.wmv。请确保目录存在且可写。
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ becomeActive:

- (bool) becomeActive: (JCCallItem *__nonnull)  item

切换活跃通话

调用此方法时,入参 JCCallItem 对象不是活跃的,则会收到 onCallItemUpdate 通知
入参 JCCallItem 对象已是活跃的,则不会收到通知

参数
item需要变为活跃状态的 JCCallItem 对象
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ call:video:callParam:

- (bool) call: (NSString *__nonnull)  userId
video: (bool)  video
callParam: (JCCallParam *__nullable)  callParam 

发起一对一呼叫

若发起的是音频呼叫,需要保证本地不存视频通话,并且本地通话数未达到最大通话数,最大通话数为:maxCallNum
若发起的是视频呼叫,需要保证本地不存在通话
发起呼叫成功后,会收到 onCallItemAdd 通知
以下两种情况会收到 onCallItemRemove 通知:

  • 本端发起视频呼叫时,对方已存在通话
  • 本端发起音频呼叫时,对方已存在视频通话
注解
在调用此接口时确保用户的登录状态为已登录
参数
userId对方的用户标识
video是否视频呼叫
  • true: 视频呼叫
  • false: 音频呼叫
callParamJCCallParam 通话参数对象,此参数可为空。详细定义见: JCCallParam
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ create:mediaDevice:callback:

+ (JCCall* __nullable) create: (JCClient *__nonnull)  client
mediaDevice: (JCMediaDevice *__nonnull)  mediaDevice
callback: (id< JCCallCallback > __nonnull)  callback 

创建 JCCall 对象

JCCall 的所有接口函数,如无特殊说明,都建议在主线程调用

注解
  • 调用此方法创建 JCCall 对象后,期间没有调用过 destroy 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCCall 对象
  • 调用此方法前确保 JCClient 已完成初始化,即 state 状态值不等于 JCClientStateNotInit
参数
clientJCClient 对象
mediaDeviceJCMediaDevice 对象,通过 create 方法创建
callbackJCCallCallback 对象,用于回调相关通知
返回
JCCall 对象
异常
JCClient、JCMediaDevice、JCCallCallback 任意一个参数传空就会创建失败

◆ destroy

+ (void) destroy

销毁 JCCall 对象

该方法为同步调用,需要等待 JCCall 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCCall 的其它方法和回调。
我们 不建议 在 JCSDK 的回调中调用此方法销毁 JCCall 对象,否则会出现崩溃。
如需在销毁后再次创建 JCCall 实例,需要等待 destroy 方法执行结束后再创建实例。

◆ enableUploadVideoStream:

- (bool) enableUploadVideoStream: (JCCallItem *__nonnull)  item

开启/关闭视频流发送

调用成功会收到 onCallItemUpdate 通知

通过 JCCallItem 对象的 uploadVideoStreamSelf 状态来决定开启还是关闭视频流的发送

注解
用于视频通话中
参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ getActiveCallItem

- (JCCallItem* __nullable) getActiveCallItem

获得当前活跃的通话

当上层收到 onCallItemAdd 回调后,调用此方法可以获取到当前活跃的通话对象,可以使用该对象进行接听、渲染视频画面等操作。
若上层在收到 onCallItemAdd 回调前调用了此方法,将会返回 nil。

返回
  • JCCallItem 对象:当前活跃的通话对象
  • nil:当前没有活跃的通话

◆ getRudpMode

- (bool) getRudpMode

RUDP开关状态

true开启,false关闭

◆ getStatistics

- (NSString * __nullable) getStatistics

获得当前通话统计信息

统计信息以Json字符串形式返回,其中包含 "Audio"、"Video"、"Mtp" 三个键值

返回
当前通话统计信息

◆ hold:

- (bool) hold: (JCCallItem *__nonnull)  item

开启/取消呼叫保持

调用成功会收到 onCallItemUpdate 通知

开启呼叫保持后,通话将被挂起,通过 hold 来决定开启/取消呼叫保持

  • hold 为 true,即呼叫保持状态时: 取消呼叫保持
  • hold 为 false,即不是呼叫保持状态时: 开启呼叫保持
注解
只针对音频,如果是视频通话则要上层处理视频逻辑
参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象,此对象的通话状态必须为通话中
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ mute:

- (bool) mute: (JCCallItem *__nonnull)  item

开启/取消音频输入静音

弃用:
从 v2.7.1 废弃。Juphoon 不建议你使用。如果你想开启/取消音频输入静音,请改用 muteMicrophone 方法

调用成功会收到 onCallItemUpdate 通知

开启后对端听不到本端的声音,通过 mute 来决定开启/取消静音

  • mute 为 true,即静音状态时: 取消静音
  • mute 为 false,即不是静音状态时: 开启静音
参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象,此对象的通话状态必须为通话中
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ muteMicrophone:mute:

- (bool) muteMicrophone: (JCCallItem *__nonnull)  item
mute: (bool)  mute 

开启/取消音频输入静音

开启后对端将听不到本端的声音

参数
itemJCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象,此对象的通话状态必须为通话中
mute是否静音
返回
是否正常调用
  • true:正常执行调用流程,会收到 onCallItemUpdate 通知
  • false:调用失败,不会收到通知

◆ muteSpeaker:mute:

- (bool) muteSpeaker: (JCCallItem *__nonnull)  item
mute: (bool)  mute 

开启/取消音频输出静音

开启后本端将听不到远端的声音

  • speakerMute 为 true,即静音状态时: 取消静音
  • speakerMute 为 false,即不是静音状态时: 开启静音
参数
itemJCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象,此对象的通话状态必须为通话中
mute是否静音
返回
是否正常调用
  • true:正常执行调用流程,会收到 onCallItemUpdate 通知
  • false:调用失败,不会收到通知

◆ sendDtmf:value:

- (bool) sendDtmf: (JCCallItem *_Nonnull)  item
value: (JCCallDtmf value 

发送DTMF信息

参数
item需要发送数据的 JCCallItem 对象
valueDTMF值
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ sendMessage:type:content:

- (bool) sendMessage: (JCCallItem *__nonnull)  item
type: (NSString *__nonnull)  type
content: (NSString *__nonnull)  content 

通过通话建立的通道发送数据

参数
item需要发送数据的 JCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
type文本消息类型,用户可以自定义,例如text,xml等
content文本内容
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ setRudpMode:

- (bool) setRudpMode: (bool)  open

RUDP开关

true开启,false关闭

◆ term:reason:description:

- (bool) term: (JCCallItem *__nonnull)  item
reason: (JCCallReason reason
description: (NSString *__nullable)  description 

挂断

调用接口成功会收到 onCallItemRemove 通知

参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
reason挂断原因
description挂断描述
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ videoRecord:enable:remote:width:height:filePath:bothAudio:

- (bool) videoRecord: (JCCallItem *__nonnull)  item
enable: (bool)  enable
remote: (bool)  remote
width: (int)  width
height: (int)  height
filePath: (NSString *__nullable)  filePath
bothAudio: (bool)  bothAudio 

开启/关闭视频通话录制

调用成功会收到 onCallItemUpdate 通知

开启视频录制,需要保证 1、没有在录音 2、若是录制远端视频,要保证没有在录制远端视频,并且远端在上传视频流 3、若是录制本端视频,要保证没有在录制本端视频,并且本端在上传视频流。
关闭视频录制,需要保证 1、若是关闭远端视频,要保证正在录制远端视频 2、若是关闭本端视频,要保证正在录制本端视频

参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
enable是否开启视频通话录制
  • true: 开启
  • false: 关闭
remote是否录制远端视频源
  • true: 录制远端视频
  • false: 录制本端视频
width录制视频宽像素
height录制视频高像素
filePath录制视频文件的本地保存路径,由用户自行指定,需精确到文件名及格式,例如:/Documents/JuphoonCloud/video.mp4。请确保目录存在且可写。
bothAudio是否录制两端音频
  • true: 录制两端音频
  • false: 录制视频端音频。也就是说 remote 为 true 就录制远端音频,remote 为 false 录制本端音频。
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

属性说明

◆ callItems

- (NSArray* __nullable) callItems
readnonatomicstrong

获得通话对象列表

maxCallNum > 1 时,callItems 通话对象列表中可能存在多个音频通话

◆ maxCallNum

- (int) maxCallNum
readwritenonatomicassign

最大通话数,默认值为1

注解
当通话数到达最大通话数后,调用 call 接口呼出会失败,收到来电会自动拒绝

◆ mediaConfig

- (JCCallMediaConfig* __nonnull) mediaConfig
readwritenonatomicstrong

当前的媒体配置参数

注解
该属性在调用 call 方法之前设置才生效
JCCallMediaConfig 对象建议通过 generateByMode 方法创建

◆ termWhenNetDisconnected

- (bool) termWhenNetDisconnected
readwritenonatomicassign

当音频接收网络状态为无网络时是否挂断,默认为 false

audioNetReceiveStatus 状态为 JCCallNetWorkDisconnected 时是否挂断

  • true: 挂断
  • false: 不挂断

该类的文档由以下文件生成:
最后更新时间: 11/9/2021, 5:34:32 PM