暖暖视频免费观**,国产免费美女被艹视频,毛片一级毛片,不卡三级

智慧服務,成就美好體驗 項目咨詢

主頁 > 服務與支持 > 開發(fā)平臺 > 客戶端SDK參考 > iOS Native SDK > 會議 會議管理

入門使用

會議管理

更新時間:2019-11-20

創(chuàng)建預約會議

描述

用戶創(chuàng)建預約會議。

前提是鑒權登錄成功和會議環(huán)境參數已設置。

業(yè)務流程

圖1 預約會議流程 
  1. UI調用tsdk_book_conference()預約會議,會議參數結構為TSDK_S_BOOK_CONF_INFO,SDK發(fā)送預約會議請求至會議服務器。
    說明: 
    1. 在預約會議時,會議開始時間(start_time)、會議方數(size)、會議類型(conf_type)、媒體類型(conf_media_type)和與會者信息(attendee_num&attendee_list)必選,其他參數可選;
    2. 按具體需求填寫會議方數,當實際與會者數目多于設置的方數時,服務會自動擴大會議方數,當填寫方數小于3時,服務器默認會議方數為3。
    3. 預約會議,會議類型應選TSDK_E_CONF_RESERVED。
    4. 服務器默認時間為UTC時間,在預約時需將預約時間轉換為UTC時間。
    代碼示例:
    -(BOOL)tsdkConfctrlBookConf:(NSArray *)attendeeArray mediaType:(EC_CONF_MEDIATYPE)mediaType startTime:(NSDate *)startTime confLen:(int)confLen subject:(NSString *)subject
    {    
        TSDK_S_BOOK_CONF_INFO *bookConfInfoUportal = (TSDK_S_BOOK_CONF_INFO *)malloc(sizeof(TSDK_S_BOOK_CONF_INFO));    
        memset_s(bookConfInfoUportal, sizeof(TSDK_S_BOOK_CONF_INFO), 0, sizeof(TSDK_S_BOOK_CONF_INFO));    
        if (subject.length > 0 && subject != nil) 
        {        
            strcpy(bookConfInfoUportal->subject, [subject UTF8String]);    
        }    
        bookConfInfoUportal->conf_type = TSDK_E_CONF_INSTANT;    
        if (startTime != nil)    
        {         
            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];        
            [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];        
            NSString *startTimeStr = [dateFormatter stringFromDate:startTime];        
            NSString *utcStr = [self getUTCFormateLocalDate:startTimeStr];        
            DDLogInfo(@"start time : %@, utc time: %@",startTimeStr,utcStr);        
            strcpy(bookConfInfoUportal->start_time, [utcStr UTF8String]);                
            bookConfInfoUportal->duration = confLen;                
            bookConfInfoUportal->conf_type = TSDK_E_CONF_RESERVED;    
        }   
        if (attendeeArray.count == 0)    
        {        
            bookConfInfoUportal->size = 5;        
            bookConfInfoUportal->attendee_num = 0;        
            bookConfInfoUportal->attendee_list = NULL;    
        }else{        
            bookConfInfoUportal->size = (TSDK_UINT32)attendeeArray.count * 2;        
            bookConfInfoUportal->attendee_num = (TSDK_UINT32)attendeeArray.count;        
            bookConfInfoUportal->attendee_list = [self returnAttendeeWithArray:attendeeArray];    
        }        
        bookConfInfoUportal->conf_media_type = (TSDK_E_CONF_MEDIA_TYPE)mediaType;    
        bookConfInfoUportal->is_hd_conf = TSDK_FALSE;    
        bookConfInfoUportal->is_multi_stream_conf = TSDK_FALSE;    
        bookConfInfoUportal->is_auto_record = TSDK_FALSE;    
        bookConfInfoUportal->is_auto_prolong = TSDK_TRUE;    
        bookConfInfoUportal->is_auto_mute = TSDK_FALSE;    
        bookConfInfoUportal->welcome_prompt = TSDK_E_CONF_WARNING_DEFAULT;    
        bookConfInfoUportal->enter_prompt = TSDK_E_CONF_WARNING_DEFAULT;    
        bookConfInfoUportal->leave_prompt = TSDK_E_CONF_WARNING_DEFAULT;    
        bookConfInfoUportal->reminder = TSDK_E_CONF_REMINDER_NONE;    
        bookConfInfoUportal->language = TSDK_E_CONF_LANGUAGE_ZH_CN;        
        TSDK_RESULT ret = tsdk_book_conference(bookConfInfoUportal);    
        DDLogInfo(@"tsdk_book_conference result : %d",ret);    
        free(bookConfInfoUportal);    
        return ret == TSDK_SUCCESS ? YES : NO;
    }
     
  2. SDK在收到服務器返回的會議預約結果響應后,向UI上報預約會議結果通知TSDK_E_CONF_EVT_BOOK_CONF_RESULT,對應的結果數據結構為TSDK_S_CONF_BASE_INFO。
    說明: 

    如果會議成功預約,其他用戶可以通過“查詢會議列表”或其他第三方方式獲取該會議的信息:

    代碼示例:
    case TSDK_E_CONF_EVT_BOOK_CONF_RESULT:        
    {            
        DDLogInfo(@"TSDK_E_CONF_EVT_BOOK_CONF_RESULT");            
        BOOL result = notify.param1 == TSDK_SUCCESS;            
        if (!result) 
        {                
            DDLogError(@"TSDK_E_CONF_EVT_BOOK_CONF_RESULT,error:%@",[NSString stringWithUTF8String:(TSDK_CHAR *)notify.data]);                
            return;            
        }                        
        TSDK_S_CONF_BASE_INFO *confListInfo = (TSDK_S_CONF_BASE_INFO *)notify.data;
    }
     

注意事項

無。

創(chuàng)建即時會議

描述

用戶創(chuàng)建立即會議。

說明: 

立即會議創(chuàng)建成功后,用戶的SIP號碼自動入會,用戶作為會議主席召集其他與會者加入會議。

前提條件

  1. 鑒權登錄成功。
  2. SIP號碼已成功注冊。
  3. 會議環(huán)境參數已設置。

業(yè)務流程

圖2 創(chuàng)建立即會議流程

  1. UI調用tsdk_book_conference()創(chuàng)建立即會議,會議參數結構為TSDK_S_BOOK_CONF_INFO;SDK發(fā)送創(chuàng)建會議請求至會議服務器。
    說明: 

    在創(chuàng)建即時會議時,會議方數(size)、會議類型(conf_type),媒體類型(conf_media_type)和與會者信息(attendee_num&attendee_list)必選,其他參數可選。

    1. 預約會議,會議類型應選TSDK_E_CONF_INSTANT。
    2. 會議開始時間不用指定。
    3. 服務器默認時間為UTC時間,在預約時需將預約時間轉換為UTC時間。
    代碼示例:
    -(BOOL)tsdkConfctrlBookConf:(NSArray *)attendeeArray mediaType:(EC_CONF_MEDIATYPE)mediaType startTime:(NSDate *)startTime confLen:(int)confLen subject:(NSString *)subject
    {    
        TSDK_S_BOOK_CONF_INFO *bookConfInfoUportal = (TSDK_S_BOOK_CONF_INFO *)malloc(sizeof(TSDK_S_BOOK_CONF_INFO));    
        memset_s(bookConfInfoUportal, sizeof(TSDK_S_BOOK_CONF_INFO), 0, sizeof(TSDK_S_BOOK_CONF_INFO));    
        if (subject.length > 0 && subject != nil) 
        {        
            strcpy(bookConfInfoUportal->subject, [subject UTF8String]);    
        }    
        bookConfInfoUportal->conf_type = TSDK_E_CONF_INSTANT;    
        if (startTime != nil)    
        {         
            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];        
            [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];        
            NSString *startTimeStr = [dateFormatter stringFromDate:startTime];        
            NSString *utcStr = [self getUTCFormateLocalDate:startTimeStr];        
            DDLogInfo(@"start time : %@, utc time: %@",startTimeStr,utcStr);        
            strcpy(bookConfInfoUportal->start_time, [utcStr UTF8String]);                
            bookConfInfoUportal->duration = confLen;                
            bookConfInfoUportal->conf_type = TSDK_E_CONF_RESERVED;    
        }   
        if (attendeeArray.count == 0)    
        {        
            bookConfInfoUportal->size = 5;        
            bookConfInfoUportal->attendee_num = 0;        
            bookConfInfoUportal->attendee_list = NULL;    
        }else{        
            bookConfInfoUportal->size = (TSDK_UINT32)attendeeArray.count * 2;        
            bookConfInfoUportal->attendee_num = (TSDK_UINT32)attendeeArray.count;        
            bookConfInfoUportal->attendee_list = [self returnAttendeeWithArray:attendeeArray];    
        }        
        bookConfInfoUportal->conf_media_type = (TSDK_E_CONF_MEDIA_TYPE)mediaType;    
        bookConfInfoUportal->is_hd_conf = TSDK_FALSE;    
        bookConfInfoUportal->is_multi_stream_conf = TSDK_FALSE;    
        bookConfInfoUportal->is_auto_record = TSDK_FALSE;    
        bookConfInfoUportal->is_auto_prolong = TSDK_TRUE;    
        bookConfInfoUportal->is_auto_mute = TSDK_FALSE;    
        bookConfInfoUportal->welcome_prompt = TSDK_E_CONF_WARNING_DEFAULT;    
        bookConfInfoUportal->enter_prompt = TSDK_E_CONF_WARNING_DEFAULT;    
        bookConfInfoUportal->leave_prompt = TSDK_E_CONF_WARNING_DEFAULT;    
        bookConfInfoUportal->reminder = TSDK_E_CONF_REMINDER_NONE;    
        bookConfInfoUportal->language = TSDK_E_CONF_LANGUAGE_ZH_CN;        
        TSDK_RESULT ret = tsdk_book_conference(bookConfInfoUportal);    
        DDLogInfo(@"tsdk_book_conference result : %d",ret);    
        free(bookConfInfoUportal);    
        return ret == TSDK_SUCCESS ? YES : NO;
    }
     
  2. SDK在收到服務器返回的立即會議創(chuàng)建響應后,向UI上報會議創(chuàng)建結果通知TSDK_E_CONF_EVT_BOOK_CONF_RESULT,對應的結果數據結構為TSDK_S_CONF_BASE_INFO,UI應提示創(chuàng)建會議成功。
    代碼示例:
    case TSDK_E_CONF_EVT_BOOK_CONF_RESULT:        
    {            
        DDLogInfo(@"TSDK_E_CONF_EVT_BOOK_CONF_RESULT");            
        BOOL result = notify.param1 == TSDK_SUCCESS;            
        if (!result) 
        {                
            DDLogError(@"TSDK_E_CONF_EVT_BOOK_CONF_RESULT,error:%@",[NSString stringWithUTF8String:(TSDK_CHAR *)notify.data]);                
            return;            
        }                        
        TSDK_S_CONF_BASE_INFO *confListInfo = (TSDK_S_CONF_BASE_INFO *)notify.data;
    }
     
  3. SDK在收到服務器返回的加入會議響應后,向UI上報加入會議結果通知TSDK_E_CONF_EVT_JOIN_CONF_RESULT,對應的結果數據結構為TSDK_S_JOIN_CONF_IND_INFO,并返回conf handle,后續(xù)會控時使用,此時, UI可跳轉至會議界面。
    說明: 
    1. 在加入會議時,會請求會議權限,若請求失敗,則會向UI上報會議權限請求失敗通知TSDK_E_CONF_EVT_REQUEST_CONF_RIGHT_FAILED,UI提示申請會控權限失敗,若請求成功,則不上報。
    2. 若應用程序是以多流的方式(SVC)成功加入會議,則此結果通知中會攜帶SVC信息,包含 is_svc_conf (是否多流會議)、svc_label_count(可使用的多流Label數) 和 svc_label (多流Label 表),應用程序應保存多流“Label”信息,用于后繼流程中“綁定SVC視頻窗口”、"選看SVC與會者"和“設置SVC窗口和與會者關系”等操作。
    代碼示例:
    case TSDK_E_CONF_EVT_JOIN_CONF_RESULT:        
    {         
        DDLogInfo(@"TSDK_E_CONF_EVT_JOIN_CONF_RESULT");            
        BOOL result = notify.param2 == TSDK_SUCCESS;            
        if (!result) 
        {                
            DDLogError(@"TSDK_E_CONF_EVT_JOIN_CONF_RESULT,error:%@",[NSString stringWithUTF8String:(TSDK_CHAR *)notify.data]);                
            return;            
        }                        
        _confHandle = notify.param1;            
        TSDK_S_JOIN_CONF_IND_INFO *confInfo = (TSDK_S_JOIN_CONF_IND_INFO *)notify.data;            
        _currentCallId = confInfo->call_id;                        
        dispatch_async(dispatch_get_main_queue(), ^{                
            // go conference                               
            [self goConferenceRunView:nil];                
            [self respondsECConferenceDelegateWithType:CONF_E_CONNECT result:nil];                
            [[NSNotificationCenter defaultCenter] postNotificationName:TUP_CALL_REMOVE_CALL_VIEW_NOTIFY object:nil];            
        });        
    }            
    break;
     
  4. SDK收到會議狀態(tài)更新通知,向UI上報會議信息及狀態(tài)更新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會議成員列表和會議信息。
    代碼示例:
    case TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE:        
    {            
        DDLogInfo(@"TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE");                        
        [self handleAttendeeUpdateNotify:notify];        
    }           
    break;
     
  5. 若會議包含數據會議能力,SDK會向UI上報獲取數據會議參數結果TSDK_E_CONF_EVT_GET_DATACONF_PARAM_RESULT。
    代碼示例:
    case TSDK_E_CONF_EVT_GET_DATACONF_PARAM_RESULT:        
    {            
        DDLogInfo(@"TSDK_E_CONF_EVT_GET_DATACONF_PARAM_RESULT");            
        BOOL result = notify.param2 == TSDK_SUCCESS;            
        if (!result) 
        {                
            DDLogError(@"TSDK_E_CONF_EVT_GET_DATACONF_PARAM_RESULT,error:%@",[NSString stringWithUTF8String:(TSDK_CHAR *)notify.data]);                
            return;            
        }            
        dispatch_async(dispatch_get_main_queue(), ^{                
             [self joinDataConference];                
            [self startHeartBeatTimer];            
        });                    
    }            
    break;
     
  6. 此時UI可選擇自動加入或用戶選擇加入數據會議,調用加入數據會議接口tsdk_join_data_conference(),SDK發(fā)送創(chuàng)建會議請求至會議服務器。
    代碼示例:
    -(void)joinDataConference
    {    
        TSDK_RESULT result = tsdk_join_data_conference(_confHandle);    
        DDLogInfo(@"tsdk_join_data_conference ret: %d", result);
    }
     
  7. SDK在收服務器加入數據會議響應后,向UI上報數據會議加入結果通知TSDK_E_CONF_EVT_JOIN_DATA_CONF_RESULT,若成功,則UI刷新界面,提示加入數據會議成功,若失敗,則提示加入數據會議失敗。
    說明: 

    在加入數據會議后,會向UI上報會議信息及狀態(tài)更新事件TSDK_E_CONF_EVT_INFO_AND_STATUS_UPDATE,UI刷新會議成員列表和會議信息。

    代碼示例:
    case TSDK_E_CONF_EVT_JOIN_DATA_CONF_RESULT:        
    {            
        DDLogInfo(@"TSDK_E_CONF_EVT_JOIN_DATA_CONF_RESULT");            
        NSDictionary *resultInfo = nil;            
        BOOL isSuccess = notify.param2 == TSDK_SUCCESS;            
        resultInfo = @{                           
            UCCONF_RESULT_KEY :[NSNumber numberWithBool:isSuccess]                           
        };            
      [self respondsECConferenceDelegateWithType:DATA_CONF_JOIN_RESOULT result:resultInfo];        
    }            
    break;
     

注意事項

無。

查詢會議列表

描述

用戶查詢自己“創(chuàng)建”的和“待參加”的預約會議信息。

前提條件

  1. 鑒權登錄成功。
  2. 會議環(huán)境參數已設置。

業(yè)務流程

圖3 查詢會議列表流程 
  1. UI調用tsdk_query_conference_list()查詢會議列表,查詢會議列表的請求信息結構為TSDK_S_QUERY_CONF_LIST_REQ。
    說明: 

    1、會議權限(conf_right)用于指定要查詢的會議權限類型,包含查詢創(chuàng)建的會議、待參加的會議或創(chuàng)建和待參加的會議,可選填;

    2、請求會議列表頁索引(page_index),取值從1開始,建議與應用程序與會議列表的頁簽對應,必須要有明確值;

    3、會議列表每頁的會議個數(page_size),建議與應用程序會議列表個數相同,必須要有明確值。

    4、返回來的時間為UTC時間,UI進行頁面呈現之前需要將UTC時間轉換為本地時間。

    代碼示例:
    -(BOOL)obtainConferenceListWithPageIndex:(int)pageIndex pageSize:(int)pageSize
    {    
        TSDK_S_QUERY_CONF_LIST_REQ conflistInfo;    
        memset(&conflistInfo, 0, sizeof(TSDK_S_QUERY_CONF_LIST_REQ));    
        conflistInfo.conf_right = TSDK_E_CONF_RIGHT_CREATE_JOIN;    
        conflistInfo.is_include_end = TSDK_FALSE;    
        conflistInfo.page_index = pageIndex;    
        conflistInfo.page_size = pageSize;    
        int result = tsdk_query_conference_list(&conflistInfo);    
        DDLogInfo(@"tsdk_query_conference_list result: %d",result);    
        return result == TSDK_SUCCESS ? YES : NO;
    }
     
  2. SDK在收到服務器返回的查詢會議列表響應后,向UI上報查詢會議列表結果通知TSDK_E_CONF_EVT_QUERY_CONF_LIST_RESULT,對應的結果數據結構為TSDK_S_CONF_LIST_INFO。
    說明: 

    1、查詢會議列表只返回會議的概要信息,如需查詢會議詳情(包括與會者信息),需要“查詢會議詳情”;

    2、會議的主席密碼需要“查詢會議詳情”獲取。

    代碼示例:
    case TSDK_E_CONF_EVT_QUERY_CONF_LIST_RESULT:        
    {           
        DDLogInfo(@"TSDK_E_CONF_EVT_QUERY_CONF_LIST_RESULT");            
        BOOL result = notify.param1 == TSDK_SUCCESS;            
        if (!result) 
        {                
            DDLogError(@"TSDK_E_CONF_EVT_QUERY_CONF_LIST_RESULT,error:%@",[NSString stringWithUTF8String:(TSDK_CHAR *)notify.data]);               
            return;            
        }                        
        [self handleGetConfListResult:notify];        
    }            
    break;
     

注意事項

無。

查詢會議詳情

描述

用戶查詢指定會議的詳細信息。

前提條件

  1. 鑒權登錄成功。
  2. 會議環(huán)境參數已設置。

業(yè)務流程

圖4 查詢會議詳情流程 
  1. UI調用tsdk_query_conference_detail查詢會議詳情,請求信息結構為TSDK_S_QUERY_CONF_DETAIL_REQ。
    說明: 

    請求消息結構TSDK_S_QUERY_CONF_DETAIL_REQ中,

    • conf_id:需要查詢的會議ID,通過查詢列表或其他方式獲取;
    • page_index:請求與會者列表頁索引,取值從1開始,建議與應用程序與會者列表的頁簽對應;
    • page_size:與會者列表每頁的與會者個數,建議與應用程序與會者列表個數相同。
    代碼示例:
     
    -(BOOL)obtainConferenceDetailInfoWithConfId:(NSString *)confId Page:(int)pageIndex pageSize:(int)pageSize
    {    
        if (confId.length == 0)    
        {        
            DDLogInfo(@"current confId is nil");        
            return NO;    
        }    
        TSDK_S_QUERY_CONF_DETAIL_REQ confInfo;    
        memset(&confInfo, 0, sizeof(TSDK_S_QUERY_CONF_LIST_REQ));    
        if (confId.length > 0 && confId != nil) 
        {        
            strcpy(confInfo.conf_id, [confId UTF8String]);    
        }    
        confInfo.page_size = pageSize;    
        confInfo.page_index = pageIndex;        
        int getConfInfoRestult = tsdk_query_conference_detail(&confInfo);    
        DDLogInfo(@"tsdk_query_conference_detail result: %d",getConfInfoRestult);    
        return getConfInfoRestult == TSDK_SUCCESS ? YES : NO;
    }
     
  2. SDK在收到服務器返回的查詢會議詳情響應后,向UI上報查詢結果事件TSDK_E_CONF_EVT_QUERY_CONF_DETAIL_RESULT,對應的結果數據結構為TSDK_S_CONF_DETAIL_INFO。
    代碼示例:
    case TSDK_E_CONF_EVT_QUERY_CONF_DETAIL_RESULT:        
    {            
        DDLogInfo(@"TSDK_E_CONF_EVT_QUERY_CONF_DETAIL_RESULT");            
        BOOL result = notify.param1 == TSDK_SUCCESS;            
        if (!result) 
        {                
            DDLogError(@"TSDK_E_CONF_EVT_QUERY_CONF_DETAIL_RESULT,error:%@",[NSString stringWithUTF8String:(TSDK_CHAR *)notify.data]);                
            return;            
        }            
        [self handleGetConfInfoResult:notify];        
    }            
    break;
     

注意事項

無。