目录

信令

单聊

发起会话
/**
 * @param[toAppAccount] NSString: 接收方账号
 * @param[toResource] NSString: 用户设备的标识
 * @param[appContent] NSData: 可以给接收方携带数据
 * @return: 会话ID,唯一标识当前流会话
 */
int64_t callId = [user dialCall:toAppAccount];
int64_t callId = [user dialCall:toAppAccount toResource:toResource];
int64_t callId = [user dialCall:toAppAccount appContent:appContent];
int64_t callId = [user dialCall:toAppAccount toResource:toResource appContent:appContent];
关闭会话
/**
 * @param[callId] int64_t: 会话ID
 * @param[byeReason] NSString: 描述信息
 */
[user closeCall:callId];
[user closeCall:callId byeReason:byeReason];

多聊

创建频道
/**
 * @param[extra] NSData: 可携带附加信息
 * @return 用于区分创建不同频道
 */
 int64_t identity = [user createChannel:extra];
加入频道
/**
 * @param[callId] int64_t: 通话ID,唯一标识一个频道会话
 * @param[callKey] NSString: 通话密钥,配合callId使用
 */
 [user joinChannel:callId callKey:callKey];
离开频道
/**
 * @param[callId] int64_t: 通话ID,唯一标识一个频道会话
 * @param[callKey] NSString: 通话密钥,配合callId使用
 */
 [user leaveChannel:callId callKey:callKey];

数据

初始化音频流配置

/**
 * @param[audioStreamConfig] MIMCStreamConfig: 音频流配置,该接口如果不调用,内部采用默认配置!
 *  audioStreamConfig.strategy:发送流策略,支持STRATEGY_FEC和STRATEGY_ACK(默认)
 *  audioStreamConfig.ackWaitTimeMs:策略为STRATEGY_ACK时有效,表示发送数据后等待接收发送成功的的响应时间,单位毫秒,默认150ms
 *  audioStreamConfig.isEncrypt:是否加密,默认false
 */
 [user initAudioStreamConfig:audioStreamConfig];

初始化视频流配置

/**
 * @param[videoStreamConfig] MIMCStreamConfig: 视频流配置,该接口如果不调用,内部采用默认配置!
 *  videoStreamConfig.strategy:发送流策略,支持STRATEGY_FEC(默认)和STRATEGY_ACK
 *  videoStreamConfig.ackWaitTimeMs:策略为STRATEGY_ACK时有效,表示发送数据后等待接收发送成功的的响应时间,单位毫秒,默认150ms
 *  videoStreamConfig.isEncrypt:是否加密,默认false
 */
 [user initVideoStreamConfig:videoStreamConfig];

发送数据

/**
 * @param[callId] int64_t: 会话ID
 * @param[data] NSData: 流数据
 * @param[dataType] RtsDataType: 数据类型,音频:AUDIO,视频:VIDEO
 * @param[dataPriority] MIMCDataPriority: 数据优先级,MIMC_P0优先级最高,MIMC_P1次之,MIMC_P2最低
 * @param[canBeDropped] Boolean: 是否允许丢包
 * @param[resendCount] int: 重发次数,针对MIMCStreamConfig.STRATEGY_ACK有效
 * @param[channelType] RtsChannelType: 通道类型,RELAY、P2P_INTERNET、P2P_INTRANET,不指定默认RELAY
 * @param[context] id: 用户自定义对象
 * @return 成功返回dataId,失败返回-1
 */
int dataId = [user sendRtsData:callId data:data dataType:dataType dataPriority:dataPriority canBeDropped:canBeDropped context:context];
int dataId = [user sendRtsData:callId data:data dataType:dataType dataPriority:dataPriority canBeDropped:canBeDropped resendCount:resendCount context:context];
int dataId = [user sendRtsData:callId data:data dataType:dataType dataPriority:dataPriority canBeDropped:canBeDropped resendCount:resendCount channelType:channelType context:context];

获取音频流配置

/**
 * @return 返回音频流配置
 */
 MIMCStreamConfig *config = [user getAudioStreamConfig];

获取视频流配置

/**
 * @return 返回视频流配置
 */
 MIMCStreamConfig *config = [user getVideoStreamConfig];

设置发送缓存大小

/**
 * @param[size] int: 以消息个数为单位
 */
[user setSendBufferSize:size];

获取发送缓存大小

int size = [user getSendBufferSize];

设置接收缓存大小

/**
 * @param[size] int: 以消息个数为单位
 */
[user setRecvBufferSize:size];

获取接收缓存大小

int size = [user getRecvBufferSize];

清空发送缓存

[user clearSendBuffer];

清空接收缓存

[user clearRecvBuffer];

获取发送缓存使用率

float rate = [user getSendBufferUsageRate];

获取接收缓存使用率

float rate = [user getRecvBufferUsageRate];

回调

单聊回调

@protocol handleRtsCallDelegate <NSObject>
/**
 * @param[fromAccount] NSString: 发起方账号
 * @param[fromResource] NSString: 用户设备的标识
 * @param[callId] int64_t: 会话ID
 * @param[appContent] NSData: 发起方携带的数据
 * @return: MIMCLaunchedResponse,成员accepted表示是否接受会话,成员errMsg携带描述信息
 */
- (MIMCLaunchedResponse *)onLaunched:(NSString *)fromAccount fromResource:(NSString *)fromResource callId:(int64_t)callId appContent:(NSData *)appContent;

/**
 * @param[callId] int64_t: 会话ID
 * @param[accepted] Boolean: 接收方同意ture,拒绝false
 * @param[desc] NSString: 描述信息
 */
- (void)onAnswered:(int64_t)callId accepted:(Boolean)accepted desc:(NSString *)desc;

/**
 * @param[callId] int64_t: 会话ID
 * @param[desc] NSString: 描述信息
 */
- (void)onClosed:(int64_t)callId desc:(NSString *)desc;

/**
 * @param[callId] int64_t: 会话ID
 * @param[fromAccount] NSString: 发送方账号
 * @param[resource] NSString: 用户设备的标识
 * @param[data]: 流数据
 * @param[dataType]: 数据类型,AUDIO,VIDEO
 * @param[channelType]: 通道类型,RELAY、P2P_INTERNET、P2P_INTRANET
 */
- (void)onData:(int64_t)callId fromAccount:(NSString *)fromAccount resource:(NSString *)resource data:(NSData *)data dataType:(RtsDataType)dataType channelType:(RtsChannelType)channelType;

/**
 * 发送流数据成功的回调,仅当流策略配置为MIMCStreamConfig.STRATEGY_ACK时回调
 * @param[callId] int64_t: 会话ID
 * @param[dataId] int: 和sendRtsData()返回值对应
 * @param[context] id: 用户自定义对象,和sendRtsData()中的context对应
 */
- (void)onSendDataSuccess:(int64_t)callId dataId:(int)dataId context
                             :(id)context;

/**
 * 发送流数据失败的回调,仅当流策略配置为MIMCStreamConfig.STRATEGY_ACK时回调
 * @param[callId] int64_t: 会话ID
 * @param[dataId] int: 和sendRtsData()返回值对应
 * @param[context] id: 用户自定义对象,和sendRtsData()中的context对应
 */
- (void)onSendDataFailure:(int64_t)callId dataId:(int)dataId context
                          :(id)context;
开发者实现上面定义的几个回调函数之后,需要设置委托者的代理是谁。比如:_user.handleRtsCallDelegate = self,self指的是实现上述几个回调函数的当前类对象。
@end

多聊回调

@protocol handleRtsChannelDelegate <NSObject>
/**
 * 创建频道回调
 * @param[identity] int64_t: 创建频道标识,和createChannel()返回值一一对应
 * @param[callId] int64_t: 通话ID 
 * @param[callKey] NSString: 通话密钥 
 * @param[success] Boolean:true成功 false失败
 * @param[desc] NSString: 描述信息
 * @param[extra] NSData: 附加信息
 */
- (void)onCreateChannel:(int64_t)identity callId:(int64_t)callId callKey:(NSString *)callKey success:(Boolean)success desc:(NSString *)desc extra:(NSData *)extra;

/**
 * 加入频道回调
 * @param[callId] int64_t: 通话ID
 * @param[appAccount] NSString: 发起方账号
 * @param[resource] NSString: 设备的标识
 * @param[success] Boolean:true成功 false失败
 * @param[desc] NSString: 描述信息
 * @param[extra] NSData: 附加信息
 * @param[members] NSArray: 频道内所有成员
 *        ChannelUser.appAccount: 用户帐号
 *        ChannelUser.resource: 用户设备的标识
 */
- (void)onJoinChannel:(int64_t)callId appAccount:(NSString *)appAccount resource:(NSString *)resource success:(Boolean)success desc:(NSString *)desc extra:(NSData *)extra members:(NSArray<MIMCChannelUser*> *)members;

/**
 * 离开频道回调
 * @param[callId] int64_t: 通话ID
 * @param[appAccount] NSString: 发起方账号
 * @param[resource] NSString: 设备的标识
 * @param[success] Boolean:true成功 false失败
 * @param[desc] NSString: 描述信息
 */
- (void)onLeaveChannel:(int64_t)callId appAccount:(NSString *)appAccount resource:(NSString *)resource success:(Boolean)success desc:(NSString *)desc;

/**
 * 新加入用户回调
 * @param[callId] int64_t:通话ID
 * @param[appAccount] NSString: 用户帐号
 * @param[resource] NSString: 设备的标识
 */
- (void)onUserJoined:(int64_t)callId appAccount:(NSString *)appAccount resource:(NSString *)resource; 

/**
 * 用户离开回调
 * @param[callId] int64_t: 通话ID
 * @param[appAccount] NSString: 用户帐号
 * @param[resource] NSString: 设备的标识
 */
- (void)onUserLeft:(int64_t)callId appAccount:(NSString *)appAccount resource:(NSString *)resource;

/**
 * 接收流数据
 * @param[callId] int64_t: 通话ID
 * @param[fromAccount] NSString: 发送方帐号
 * @param[resource] NSString: 设备的标识
 * @param[data] NSData: 流数据
 * @param[dataType] RtsDataType: 数据类型,AUDIO,VIDEO
 */
- (void)onData:(int64_t)callId fromAccount:(NSString *)fromAccount resource:(NSString *)resource data:(NSData *)data dataType:(RtsDataType)dataType;

/**
 * 发送流数据成功的回调,仅当流策略配置为MIMCStreamConfig.STRATEGY_ACK时回调
 * @param[callId] int64_t: 通话ID
 * @param[dataId] int: 和sendRtsData()返回值对应
 * @param[context] id: 用户自定义对象,和sendRtsData()中的context对应
 */
- (void)onSendDataSuccess:(int64_t)callId dataId:(int)dataId context:(id)context;

/**
 * 发送流数据失败的回调,仅当流策略配置为MIMCStreamConfig.STRATEGY_ACK时回调
 * @param[callId] int64_t: 通话ID
 * @param[dataId] int: 和sendRtsData()返回值对应
 * @param[context] id: 用户自定义对象,和sendRtsData()中的context对应
 */
- (void)onSendDataFailure:(int64_t)callId dataId:(int)dataId context:(id)context;
开发者实现上面定义的几个回调函数之后,需要设置委托者的代理是谁。比如:_user.handleRtsChannelDelegate = self,self指的是实现上述几个回调函数的当前类对象。
@end

回到顶部

results matching ""

    No results matching ""