主要功能

会议管理

入会

/**
*@brief 进入会议
 *@param pUserName 进入会议的用户的名字
 *@param pMeetingCode 会议的参会密码(注意不含‘-’)
 *@param videoEnable 是否默认开启视频
 *@param audioEnable 是否默认打开音频
 *@param showPreview 是否显示视频预览窗口
 *@param extraData 用来在会议信息中显示的扩展数据
 */
void TangMeetingJoin(const char* pUserName, const char* pMeetingCode, bool videoEnable, bool audioEnable, bool showPreview, const char* extraData); 

调用时机:初始化之后

使用UserID 入会

/**
*@brief 进入会议
*@param pUserId 进入会议的用户id
*@param pMeetingCode 会议的参会密码(注意不含‘-’)
*@param videoEnable 是否默认视频*@param audioEnable 是否默认打开音频
*@param showPreview 是否显示视频预览窗口
*@param extraData 用来在会议信息中显示的扩展数据
*/
void TangMeetingJoinByUserId(const char * pUserId , const char* pMeetingCode, bool videoEnable, bool audioEnable, bool showPreview, const char* extraData); 

调用时机:初始化以后 注意:使用此接口入会,会中的display name将自动识别为开通的账号的display name, 另外,如果使用约会人的userId, 会议密码即使用参会人密码,会中仍然是主持人

extraData说明

// extraData 是用来替换会中信息的 Json格式字符串
// 参考:
[{"key":"飒飒飒飒1","value":"11111111111111111111","type":"show, copy","replace":""}, // 直接展示在会议信息中,并且可以复制
{"key":"飒飒飒飒2","value":"11111111111111111111","type":"show, copy","replace":""}, // 直接展示在会议信息中,并且可以复制
{"key":"飒飒飒飒3","value":"11111111111111111111","type":"show, copy","replace":""}, // 直接展示在会议信息中,并且可以复制
{"key":"2222啊啊","value":"https://www.meeting.com/","type":"copy","replace":"joinUrl"}, // 不展示在界面上,可以复制,替换的原先的joinUrl-- 目前仅仅支持joinUrl的替换 
{"key":"飒飒飒飒4","value":"11111111111111111111","type":"show, copy","replace":""} // 直接展示在会议信息中,并且可以复制] 

 

使用json 字串入会

/**
*@brief 进入会议
*@param jsonParameter   进入会议的参数,注意这里接收的是一个string而不是Json对象
例如:{\"meetingCode\":\"8308939471\",\"userName\":\"demo11\",\"userId\":\"12345678\",\"videoEnable\":0,\"audioEnable\":0,\"showPreview\":0,\"extraData\":[{\"key\":\"userdefinedkey1\",\"value\":\"userdefinedvalue1\",\"type\":\"show, copy\",\"replace\":\"\"},{\"key\":\"userdefinedkey2\",\"value\":\"userdefinedvalue2\",\"type\":\"copy\",\"replace\":\"joinUrl\"}]}"
*@param userId 进入会议的用户id
*@param meetingCode 会议的参会密码(注意不含‘-’)
*@param userName 入会名称
*@param videoEnable 0:不打开视频 1:打开视频
*@param audioEnable 0:不连接voip音频 1:连接voip音频
*@param showPreview 0:关闭视频预览 1:打开视频预览 2:是否打开视频预览根据个人设置
*@param extraData 用来在会议信息中显示的扩展数据
*/
void TangMeetingJoinByJson(const char* jsonParameter);

调用时机:初始化之后

退会

/**
*@brief 退出会议
*@terminate true时,表示主持人离开会议时是否自动结束会议,对参会人此参数无效
*@return void
*/
void TangMeetingStop(bool terminate); 

调用时机:用户希望通过app控制退会

反初始化

/**
*@brief 销毁TangMeetingSDK.该接口可将meetingSDK的实例杀掉,第三方APP退出之前应调用该接口,否则可能不能完全退出程序
*@return*- == true 销毁成功*- == false 销毁失败
*/
bool TangMeetingUninitialize(); 

调用时机:用户app结束时,卸载sdk

配置界面属性

/**
*@brief 此接口用来定制界面做一些个性化设置,应在入会之前调用,且只需调用一次,多次调用无效。如没有个性化要求,此接口可以不调用
*@customConfigData Json格式的字符串,具体可配置项如下*
*return*-== true 设置成功*-== false 设置失败(比如没有调用Initialize就调用本函数)
*/
bool TangMeetingSetCustomConfig(const char * customConfigData); 

customConfigData示例: {"colorTheme":1,"language":1, "customUI":{"inviteBtn":{"isShow":true}}} // 深色主题,英文,参会人也有邀请按钮

customConfig对象定义:

key value类型 描述
appName string 设置会议窗口显示名称
language number 设置会议界面的显示语言,0:简体中文(默认);1:英文
colorTheme number 设置会议界面的主题色, 1:深色主题; 2: 浅色主题(默认)
customUI object 设置会议界面中元素的自定义项,见customUI对象参考
openVideoWhenJoinMeeting boolean 入会是否开启视频,true: 开启; false: 不开启,如果调用入会接口TangMeetingJoin时,设置了videoEnable,则会覆盖该值
openVOIPWhenJoinMeeting boolean 入会是否连接VOIP,true: 连接; false: 不连接,如果调用入会接口TangMeetingJoin时,设置了audioEnable,则会覆盖该值
isMuteMicrophoneWhenJoin boolean 入会是否连接VOIP是否静音,true: 静音; false: 不静音,只有入会自动连接VOIP时,该值才起作用

customUI对象定义:

key value类型 描述
inviteBtn customBtnObject 邀请按钮
shareBtn customBtnObject 共享按钮
switchLayoutBtn customBtnObject 切换布局按钮
layoutType number 设置布局类型,1:平均(默认);2:全景;3:演讲;4:回型;5:上台; 6: 工字型; 7: 左右
audioBtn customBtnObject 音频设置按钮
videoBtn customBtnObject 视频设置按钮
attendeeBtn customBtnObject 参会人按钮
chatBtn customBtnObject 聊天按钮
lockBtn customBtnObject 锁定会议按钮
interactiveBtn customBtnObject 互动激励按钮
customerServiceBtn customBtnObject 客服按钮
aboutBtn customBtnObject 关于按钮
feedbackBtn customBtnObject 反馈按钮
isShowFootbar boolean 是否显示底部工具栏,true:显示(默认);false:隐藏
isShowMeetingInfo boolean 是否显示会议信息,true:显示(默认);false:隐藏
leaveBtn customBtnObject 离开按钮
isShowBulletOption boolean 是否显示弹幕选项,true:显示(默认);false:隐藏
isShowEmotionToolbar boolean 是否显示聊天表情,true:显示(默认);false:隐藏
isShowAudioGuide boolean 是否显示音频引导弹窗,true:显示(默认);false:隐藏,如果设置了入会自动连接VOIP,则该值不起作用

customBtnObject对象参考:

key value类型 描述
isShow boolean 是否显示,true:显示(默认);false:隐藏

调用时机:在初始化之后

其他功能

获取会议信息

/**
*@brief 通过会议Id获取会议信息
*@param meetingId 会议ID
*@return
*/
void GetMeetingInfo(const char* meetingId); 

调用时机:初始化以后,通过会议ID获取会议详情, 详情通过回调 pfnOnGetMeetingInfo 返回

登录

/**
 *@brief 通过普通账号密码登录云会议
 *@param pUserName 用户名
 *@param pPassword 密码
 *@return
 */
void LoginWithPassword(const char* pUserName, const char* pPassword); 

调用时机:初始化以后,登录状态通过 pfnOnLoginResult 回调返回

回调事件说明

会议状态回调

/**
 * 会议状态变化的回调
 */
typedef void(*pfnOnMeetingStatusChanged)(TangMeetingStatus eStatus); 

约会或邀请人后回调

/** 返回数据说明 
{
  "contactsInfo":" 
    { 
      "attendeePassCode":"参会人密码", 
      "meetingId":"会议id", 
      "conferenceJoinUrl":"入会链接", 
      "confHostName":"会议主持人名称", 
      "conHostId":"会议主持人 id", 
      "title":"会议标题", 
      "trigger":2
    }"
} 
*//** 
返回数据demo 
{
  "contactsInfo":" 
   { 
     "attendeePassCode":"1673958948", 
     "meetingId":"3436449", 
     "conferenceJoinUrl":"https://n.qsh1.cn/k/klppX2dKa0", 
     "confHostName":"微V测试06", 
     "conHostId":"20384857", 
     "title":"微V测试06的会议室", 
     "trigger":2
    }"
} 

*//**
* 预约会议或会中邀请按钮被触发的回调
*/
typedef void(*pfnOnInviteContact)(const char *pMeetingInfo); 

创建会议后的回调

/**
* 创建会议后的回调, 返回会议的id
*/
typedef void(*pfnOnMeetingCreated)(TangMeetingErrorCode errorCode, const char *pMeetingId); 

获取会议信息回调

/**
* 获取会议信息的回调, 返回会议信息的JSON字符串
{ 
    id - 会议的id, 
    title - 会议的标题, 
    startTime - 会议的开始时间, 
    attendees - 会议的参会人ID列表数组, 
    hostId - 会议的主持人ID, 
    hostName - 会议的主持人名字, 
    pCode - 会议的参会人密码, 
    hCode - 会议的主持人密码,仅在登录账户是该场会议的主持人时候返回,}
*/
typedef void(*pfnOnGetMeetingInfo)(TangMeetingErrorCode errorCode, const char *pMeetingInfo); 

登录的回调

/**
* 登录的回调, 返回错误码
*/
typedef void(*pfnOnLoginResult)(TangMeetingErrorCode errorCode); 

邀请外呼列表回调

/**
* 返回外呼邀请信息返回的UserInfo是一个Json数组 
[ 
    { 
      userName: name, 
      phoneNum: phoneNumber, 
      email: xxx@email.com 
     }, 
]
*/
typedef void(*pfnOnCallUsers)(const char *pUsersInfo); 

对应错误码与状态码

enum TangMeetingStatus
{ 
   tang_meeting_login_failed = 100, //登陆失败 
   tang_meeting_scheduler_failed = 101, //预约会议失败 
   tang_meeting_join_failed = 102, //入会失败
   tang_meeting_join_need_login = 103, // 入会需要登录
   tang_meeting_login_succeed = 200, // 登陆成功 
   tang_meeting_scheduler_succeed = 201, // 预约会议成功 
   tang_meeting_join_succeed = 202, // 入会成功 
   tang_meeting_exit = 300, // 退出会议
   tang_meeting_ended = 301, // 会议已结束
   tang_meeting_exit_meeting_window = 400, // 退出会中窗口
   tang_meeting_auth_key_invalid = 410, // 没有或者authKey无效
   tang_meeting_login_with_auth_key_failed = 411, //使用authKey登录失败
   
};
enum TangMeetingErrorCode、
{ 
    success = 0, // 成功 
    login_failed = 100, // 登录失败 
    client_not_login = 104, // 客户端没有登录 
    client_not_running = 105, // SDK的客户端没有运行
};