# 频道管理

# 频道信息查询

调用 query (opens new window) 接口查询频道相关信息,例如频道名称、频道是否存在、成员名以及成员数

[mediaChannel query:@"channelId"];

查询操作发起后,查询的结果通过 onQuery (opens new window) 回调上报。

-(void)onQuery:(int)operationId result:(bool)result reason:(JCMediaChannelReason)reasonquery Info:(JCMediaChannelQueryInfo *)queryInfo 
{
    // 查询成功
    if (result) {
        // 查询频道标识
        NSString* channelId = queryInfo.channelId;
        // 查询频道号
        int number = queryInfo.number;
        // 查询频道成员列表
        NSMutableArray *members = queryInfo.members;
    } else {
        // 查询失败
    }
}

# 频道成员管理

# 获取成员对象

通过 userId 获取频道成员对象。

/**
 *  @brief 获得频道成员
 *  @param userId 用户唯一标识
 *  @return 成员对象
 */
-(JCMediaChannelParticipant* __nullable)getParticipant:(NSString* __nonnull)userId;

# 踢出成员

调用下面的方法将成员踢出会议。

/**
 * @brief 将成员踢出会议
 *
 * @param participant 成员
 * @return true表示成功,false表示失败
 */
-(BOOL)kick:(JCMediaChannelParticipant * __nonnull)participant;

示例代码

JCMediaChannelParticipant* participant = [mediaChannel getParticipant:@"userId"];
if (participant != nil) {
    [mediaChannel kick:participant];
}

# 给其他成员发消息

如果想在频道中给其他成员发送消息,可以调用下面的接口。

/**
 * @brief 发送消息
 *
 * @param type 消息类型
 * @param content 消息内容,当 toUserId 不为 nil 时,content 不能大于 4k
 * @param toUserId 接收者id,null则发给频道所有人员
 * @return 返回 true 表示成功,false表示失败
 */
-(bool)sendMessage:(NSString * __nonnull)type content:(NSString * __nonnull)content toUserId:(NSString * __nullable)toUserId;

其中,消息类型(type)为自定义类型。

示例代码

-(void)onJoin:(bool)result reason:(JCMediaChannelReason)reason channelId:(NSString*)channelId {
    // 发送给所有成员
    [mediaChannel sendMessage:@"text" content:@"content" toUserId:nil];
    // 发送给某个成员
    [mediaChannel sendMessage:@"text" content:@"content" toUserId:@"接收者id"];
}

当频道中的其他成员收到消息时,会收到 onMessageReceive 回调。

/**
 * @brief 接收频道消息的回调
 *
 * @param type 消息类型
 * @param content 消息内容
 * @param fromUserId    消息发送成员的userId
 */
-(void)onMessageReceive:(NSString *)type content:(NSString *)content fromUserId:(NSString *)fromUserId;

# 频道属性设置

在调用 JCMediaChannel 中的 join 函数加入/创建频道前,您可以通过 JoinParam 类来设置频道属性,如频道允许加入的最大人数、推流参数、录制参数等。其默认参数如下所示。

/// 会议最大人数
int capacity;
/// 推流参数
NSString* __nullable cdn;
/// 录制参数
JCMediaChannelRecordParam * __nullable record;
/// 密码
NSString* __nonnull password;
/// 平滑模式
bool smooth;
/// 会议最大分辨率 JCMediaChannelMaxResolution
JCMediaChannelMaxResolution maxResolution;
/// 心跳间隔
int heartbeatTime;
/// 心跳超时
int heartbeatTimeout;
/// 方形画面
bool square;
/// 帧率 1-30, 默认 24
int framerate;
/// 最大码率
int maxBitrate;
/// 自定义属性
NSString* __nullable customProperty;
/// 自定义媒体每层参数
NSString* __nullable customVideoResolution;
/// 会议画面比例
float videoRatio;

# 最大人数设置

您可以通过改变 capacity 参数来调整频道最大人数。

JCMediaChannelJoinParam *joinParam = [[JCMediaChannelJoinParam alloc] init];
// 设置最大人数
joinParam.capacity = 6;
// 加入频道
[mediaChannel join:@"222" joinParam:joinParam];

# 会议最大分辨率设置

您可以通过改变 maxResolution 参数来调整频道最大分辨率。

JCMediaChannelJoinParam *joinParam = [[JCMediaChannelJoinParam alloc] init];
// 设置会议最大分辨率
joinParam.maxResolution = JCMediaChannelMaxResolution360;
// 加入频道
[mediaChannel join:@"222" joinParam:joinParam];

TIP

菊风默认提供 360p 的最大分辨率,如需设置会议最大分辨率 720p,1080p,您可以通过发送邮件与我们取得联系:marketing@juphoon.com.cn 。

最后更新时间: 6/15/2021, 10:57:31 AM