目录
信令
单聊
发起会话
/**
* @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: 是否加密,默认NO
*/
[user initAudioStreamConfig:audioStreamConfig];
初始化视频流配置
/**
* @param[videoStreamConfig] MIMCStreamConfig: 视频流配置,该接口如果不调用,内部采用默认配置!
* videoStreamConfig.strategy: 发送流策略,支持STRATEGY_FEC(默认)和STRATEGY_ACK
* videoStreamConfig.ackWaitTimeMs: 策略为STRATEGY_ACK时有效,表示发送数据后等待接收发送成功的的响应时间,单位毫秒,默认150ms
* videoStreamConfig.isEncrypt: 是否加密,默认NO
*/
[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] BOOL: 是否允许丢包
* @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] BOOL: 接收方同意ture,拒绝NO
* @param[desc] NSString: 描述信息
*/
- (void)onAnswered:(int64_t)callId accepted:(BOOL)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] BOOL: YES:成功,NO:失败
* @param[desc] NSString: 描述信息
* @param[extra] NSData: 附加信息
*/
- (void)onCreateChannel:(int64_t)identity callId:(int64_t)callId callKey:(NSString *)callKey success:(BOOL)success desc:(NSString *)desc extra:(NSData *)extra;
/**
* 加入频道回调
* @param[callId] int64_t: 通话ID
* @param[appAccount] NSString: 发起方账号
* @param[resource] NSString: 设备的标识
* @param[success] BOOL: YES:成功,NO:失败
* @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:(BOOL)success desc:(NSString *)desc extra:(NSData *)extra members:(NSArray<MIMCChannelUser*> *)members;
/**
* 离开频道回调
* @param[callId] int64_t: 通话ID
* @param[appAccount] NSString: 发起方账号
* @param[resource] NSString: 设备的标识
* @param[success] BOOL: YES:成功,NO:失败
* @param[desc] NSString: 描述信息
*/
- (void)onLeaveChannel:(int64_t)callId appAccount:(NSString *)appAccount resource:(NSString *)resource success:(BOOL)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
回到顶部