You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
440 lines
10 KiB
440 lines
10 KiB
// |
|
// JCCallItem.h |
|
// JCSDK-OC |
|
// |
|
// Created by maikireton on 2017/8/11. |
|
// Copyright © 2017年 juphoon. All rights reserved. |
|
// |
|
|
|
#import <Foundation/Foundation.h> |
|
#import "JCCallConstants.h" |
|
|
|
/** |
|
* @addtogroup 一对一通话模块 |
|
* @{ |
|
*/ |
|
|
|
/** |
|
* 上次更新到这次更新间的状态变化集合 |
|
*/ |
|
@interface JCCallChangeParam : NSObject |
|
|
|
/** |
|
* 状态是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool state; |
|
|
|
/** |
|
* 挂起是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool hold; |
|
|
|
/** |
|
* 被挂起是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool held; |
|
|
|
/** |
|
* 静音是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool mute; |
|
|
|
/** |
|
* 音频录制是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool audioRecord; |
|
|
|
/** |
|
* 本地视频录制是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool localVideoRecord; |
|
|
|
/** |
|
* 远端视频录制是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool remoteVideoRecord; |
|
|
|
/** |
|
* 音频输出是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool audioOutputType; |
|
|
|
/** |
|
* 活跃是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool active; |
|
|
|
/** |
|
* 本端上传视频是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool uploadVideoStreamSelf; |
|
|
|
/** |
|
* 对端上传视频是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool uploadVideoStreamOther; |
|
|
|
/** |
|
* 网络状态是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool netStatus; |
|
|
|
/** |
|
* 对端声音中断是否变化 |
|
* - true: 变化 |
|
* - false: 没变化 |
|
*/ |
|
@property (nonatomic) bool otherAudioInterrupt; |
|
|
|
@end |
|
|
|
|
|
/** |
|
* 通话对象,此类主要记录通话的一些状态,UI可以根据其中的状态进行更新 |
|
*/ |
|
@interface JCCallItem : NSObject |
|
|
|
/** |
|
* 用户标识 |
|
*/ |
|
@property (nonatomic, readonly, copy) NSString* __nonnull userId; |
|
|
|
/** |
|
* 用户昵称 |
|
* |
|
* @note |
|
* - 用户昵称为空时返回用户标识 |
|
* - 被叫能够直接获取主叫的昵称,主叫不能直接获取被叫的昵称。被叫可以在收到 {@link JCCallCallback#onCallItemAdd: onCallItemAdd} 回调时可以通过 {@link JCMessageChannel#sendMessage:keyId:messageType:text:extraParams:cookie:atAll:atServerUidList: sendMessage} 方法向主叫发送自己的昵称 |
|
*/ |
|
@property (nonatomic , copy) NSString* __nullable displayName; |
|
|
|
/** |
|
* 渲染标识 |
|
* |
|
* 此属性原本用于 {@link JCMediaDevice#startVideo:renderType: startVideo} 渲染其他端视频使用,现在可以直接调用 {@link startOtherVideo: startOtherVideo} 方法来渲染其他端视频 |
|
*/ |
|
@property (nonatomic, readonly, copy) NSString* __nonnull renderId; |
|
|
|
/** |
|
* 通话方向(呼入或呼出) |
|
* |
|
* - @ref JCCallDirectionIn : 呼入 |
|
* - @ref JCCallDirectionOut : 呼出 |
|
*/ |
|
@property (nonatomic, readonly) JCCallDirection direction; |
|
|
|
/** |
|
* 是否为视频通话 |
|
* |
|
* - true: 视频通话 |
|
* - false: 音频通话 |
|
*/ |
|
@property (nonatomic, readonly) bool video; |
|
|
|
/** |
|
* 通话建立时间戳,单位秒 |
|
*/ |
|
@property (nonatomic, readonly) long beginTime; |
|
|
|
/** |
|
* 通话开始时间戳,单位秒 |
|
*/ |
|
@property (nonatomic, readonly) long talkingBeginTime; |
|
|
|
/** |
|
* 获取通话状态 |
|
* |
|
* 通话状态,参见: |
|
* - @ref JCCallStateInit : 初始 |
|
* - @ref JCCallStatePending : 振铃 |
|
* - @ref JCCallStateConnecting : 连接中 |
|
* - @ref JCCallStateTalking : 通话中 |
|
* - @ref JCCallStateOk : 通话正常结束 |
|
* - @ref JCCallStateCancel : 未接通挂断 |
|
* - @ref JCCallStateCanceled : 未接通被挂断 |
|
* - @ref JCCallStateMissed : 未接 |
|
* - @ref JCCallStateError : 异常 |
|
*/ |
|
@property (nonatomic, readonly) JCCallState state; |
|
|
|
/** |
|
* 此路通话是否为挂起状态 |
|
* |
|
* - true: 挂起状态 |
|
* - false: 非挂起状态 |
|
*/ |
|
@property (nonatomic, readonly) bool hold; |
|
|
|
/** |
|
* 此路通话是否为被挂起状态 |
|
* |
|
* - true: 被挂起状态 |
|
* - false: 非被挂起状态 |
|
*/ |
|
@property (nonatomic, readonly) bool held; |
|
|
|
/** |
|
* 此路通话是否为静音状态 |
|
* |
|
* @deprecated 从 v2.7.1 废弃。Juphoon 不建议你使用。建议使用 {@ref JCCall.muteMicrophone:mute: muteMicrophone} 方法开启/取消音频输入静音, |
|
* 并使用 @ref microphoneMute 属性获取此路通话是否为音频输入静音状态。 |
|
|
|
* - true: 静音状态 |
|
* - false: 不是静音状态 |
|
*/ |
|
@property (nonatomic, readonly) bool mute; |
|
|
|
/** |
|
* 此路通话是否为音频输入静音状态 |
|
* |
|
* - true: 静音状态 |
|
* - false: 不是静音状态 |
|
*/ |
|
@property (nonatomic, readonly) bool microphoneMute; |
|
|
|
/** |
|
* 此路通话是否为音频输出静音状态 |
|
* |
|
* - true: 静音状态 |
|
* - false: 不是静音状态 |
|
*/ |
|
@property (nonatomic, readonly) bool speakerMute; |
|
|
|
/** |
|
* 此路通话是否为录音状态 |
|
* |
|
* - true: 录音状态 |
|
* - false: 非录音状态 |
|
*/ |
|
@property (nonatomic, readonly) bool audioRecord; |
|
|
|
/** |
|
* 录音文件的保存路径 |
|
*/ |
|
@property (copy, nonatomic, readonly) NSString* __nullable audioRecordFilePath; |
|
|
|
/** |
|
* 是否在录制本端视频 |
|
* |
|
* - true: 正在录制本端视频 |
|
* - false: 没有在录制本端视频 |
|
*/ |
|
@property (nonatomic, readonly) bool localVideoRecord; |
|
|
|
/** |
|
* 本端视频录制文件的保存路径 |
|
*/ |
|
@property (copy, nonatomic, readonly) NSString* __nullable localVideoRecordFilePath; |
|
|
|
/** |
|
* 是否在录制远端视频 |
|
* |
|
* - true: 正在录制远端视频 |
|
* - false: 没有在录制远端视频 |
|
*/ |
|
@property (nonatomic, readonly) bool remoteVideoRecord; |
|
|
|
/** |
|
* 获取远端视频录制文件的保存路径 |
|
*/ |
|
@property (copy, nonatomic, readonly) NSString* __nullable remoteVideoRecordFilePath; |
|
|
|
/** |
|
* 音频输出类型,根据类型判断是听筒,耳机,麦克风等 |
|
*/ |
|
@property (nonatomic, readonly, copy) NSString* __nullable audioOutputType; |
|
|
|
/** |
|
* 是否激活状态,会议通话时忽略此参数 |
|
* |
|
* - true: 激活状态 |
|
* - false: 不是激活状态 |
|
*/ |
|
@property (nonatomic, readonly) bool active; |
|
|
|
/** |
|
* 获取本端是否在上传视频流 |
|
* |
|
* @note 针对视频通话有效 |
|
* |
|
* 本端是否在上传视频流 |
|
* - true: 本端在上传视频流 |
|
* - false: 本端没有在上传视频流 |
|
*/ |
|
@property (nonatomic, readonly) bool uploadVideoStreamSelf; |
|
|
|
/** |
|
* 获取对端是否在上传视频流 |
|
* |
|
* @note 针对视频通话有效 |
|
* |
|
* 对端是否在上传视频流 |
|
* - true: 对端在上传视频流 |
|
* - false: 对端没有在上传视频流 |
|
*/ |
|
@property (nonatomic, readonly) bool uploadVideoStreamOther; |
|
|
|
/** |
|
* 获取通话结束原因 |
|
* |
|
* 通话结束原因,参见 @ref JCCallReason "JCCall 结束原因" |
|
*/ |
|
@property (nonatomic, readonly) JCCallReason reason; |
|
|
|
/** |
|
* 音频发送网络状态 |
|
* |
|
* - @ref JCCallNetWorkNA : 未知状态 |
|
* - @ref JCCallNetWorkDisconnected : 无网络 |
|
* - @ref JCCallNetWorkVeryBad : 很差 |
|
* - @ref JCCallNetWorkBad : 差 |
|
* - @ref JCCallNetWorkNormal : 一般 |
|
* - @ref JCCallNetWorkGood : 好 |
|
* - @ref JCCallNetWorkVeryGood : 很好 |
|
*/ |
|
@property (nonatomic, readonly) JCCallNetWork audioNetSendStatus; |
|
|
|
/** |
|
* 音频接收网络状态 |
|
* |
|
* - @ref JCCallNetWorkNA : 未知状态 |
|
* - @ref JCCallNetWorkDisconnected : 无网络 |
|
* - @ref JCCallNetWorkVeryBad : 很差 |
|
* - @ref JCCallNetWorkBad : 差 |
|
* - @ref JCCallNetWorkNormal : 一般 |
|
* - @ref JCCallNetWorkGood : 好 |
|
* - @ref JCCallNetWorkVeryGood : 很好 |
|
*/ |
|
@property (nonatomic, readonly) JCCallNetWork audioNetReceiveStatus; |
|
|
|
/** |
|
* 视频发送网络状态 |
|
* |
|
* - @ref JCCallNetWorkNA : 未知状态 |
|
* - @ref JCCallNetWorkDisconnected : 无网络 |
|
* - @ref JCCallNetWorkVeryBad : 很差 |
|
* - @ref JCCallNetWorkBad : 差 |
|
* - @ref JCCallNetWorkNormal : 一般 |
|
* - @ref JCCallNetWorkGood : 好 |
|
* - @ref JCCallNetWorkVeryGood : 很好 |
|
*/ |
|
@property (nonatomic, readonly) JCCallNetWork videoNetSendStatus; |
|
|
|
/** |
|
* 视频接收网络状态 |
|
* |
|
* - @ref JCCallNetWorkNA : 未知状态 |
|
* - @ref JCCallNetWorkDisconnected : 无网络 |
|
* - @ref JCCallNetWorkVeryBad : 很差 |
|
* - @ref JCCallNetWorkBad : 差 |
|
* - @ref JCCallNetWorkNormal : 一般 |
|
* - @ref JCCallNetWorkGood : 好 |
|
* - @ref JCCallNetWorkVeryGood : 很好 |
|
*/ |
|
@property (nonatomic, readonly) JCCallNetWork videoNetReceiveStatus; |
|
|
|
/** |
|
* 获取自定义参数 |
|
* |
|
* 即调用 {@link JCCall#call:video:callParam: call} 接口时,@ref JCCall#callParam "callParam" 入参对象的 @ref JCCallParam#extraParam "extraParam" 值 |
|
* |
|
* @return 自定义参数 |
|
*/ |
|
@property (nonatomic, readonly, copy) NSString* __nullable extraParam; |
|
|
|
/** |
|
* 获取服务端唯一通话CallId |
|
* |
|
* 可以用来通话去重,如果为空字符串则不能通过此字段来去重,说明此通话还未到服务器 |
|
*/ |
|
@property (nonatomic, readonly, copy) NSString* __nullable serverCallId; |
|
|
|
/** |
|
* 对端声音是否中断 |
|
* - true: 对端声音中断 |
|
* - false: 对端声音没有中断 |
|
*/ |
|
@property (nonatomic, readonly) bool otherAudioInterrupt; |
|
|
|
/** |
|
* 小系统通话中,标识通话唯一性 |
|
* |
|
* 即调用 {@link JCCall#call:video:callParam: call} 接口时,@ref JCCallParam "callParam" 入参对象的 @ref JCCallParam.ticket "ticket" 值 |
|
*/ |
|
@property (nonatomic, readonly) NSString *__nullable ticket; |
|
|
|
|
|
/** |
|
* 自动开启音频 |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool autoStartAudio; |
|
|
|
/** |
|
* 字符串信息 |
|
* @return 返回 JCCallItem 实例信息 |
|
*/ |
|
-(NSString* __nonnull)toString; |
|
|
|
/** |
|
* 启动自身视频渲染 |
|
* |
|
* @param type 渲染模式: |
|
* - @ref JCMediaDeviceRenderFullScreen : 铺满窗口,会有裁剪 |
|
* - @ref JCMediaDeviceRenderFullContent : 全图像显示,会有黑边 |
|
* - @ref JCMediaDeviceRenderFullAuto : 自适应 |
|
* @return 渲染对象 |
|
*/ |
|
-(JCMediaDeviceVideoCanvas* __nullable)startSelfVideo:(JCMediaDeviceRender)type; |
|
|
|
/** |
|
* 停止自身视频渲染 |
|
*/ |
|
-(void)stopSelfVideo; |
|
|
|
/** |
|
* 启动对端视频渲染 |
|
* |
|
* @param type 渲染模式: |
|
* - @ref JCMediaDeviceRenderFullScreen : 铺满窗口,会有裁剪 |
|
* - @ref JCMediaDeviceRenderFullContent : 全图像显示,会有黑边 |
|
* - @ref JCMediaDeviceRenderFullAuto : 自适应 |
|
* @return 渲染对象 |
|
*/ |
|
-(JCMediaDeviceVideoCanvas* __nullable)startOtherVideo:(JCMediaDeviceRender)type; |
|
|
|
/** |
|
* 停止对端视频渲染 |
|
*/ |
|
-(void)stopOtherVideo; |
|
|
|
@end |
|
|
|
/** |
|
* @} |
|
*/
|
|
|