live_js_api
類別
概述
PolyvLiveSdk 是用於建立 SDK 實例的類別
應用場景:當自己實現聊天室的功能時,可以使用到這兩個屬性
類別屬性
| 屬性名稱 | 描述 | 回傳資料類型 | 備註 |
|---|---|---|---|
| emotionLists | polyv 表情資料列表 | array | 已棄用 |
| emotionSearch | 鍵值對為 [表情title]: 表情url 的物件 |
object | 已棄用 |
emotionLists 與 emotionSearch 已棄用且不再維護,請使用 保利威表情 SDK 轉換訊息的表情內容。
全部表情 sprites 圖片位址: https://livestatic.polyv.net/assets/images/em/default.png
/**
* 获取表情数据列表
*
* @return {Array} - 表情数据列表
*/
// 示例代码
console.log(PolyvLiveSdk.emotionLists);
// 返回数据
[
{
url: "https://livestatic.polyv.net/assets/images/em/1.png",
title: "微笑",
position: "0px 0px"
}
]
/**
* 获取表情对象
*
* @return {Object} - 对象
*/
// 示例代码
console.log(PolyvLiveSdk.emotionSearch);
// 返回数据
{
NO: {
url: "https://livestatic.polyv.net/assets/images/em/89.png",
title: "NO",
position: "-4224px 0px"
}
}
類別方法
| 方法名 | 描述 | 參數 |
|---|---|---|
| getChannelInfo | 取得頻道資訊 | 見下方範例程式碼區塊 |
| previewPPT | 預覽指定的PPT | 見下方範例程式碼區塊 |
/**
* 获取频道信息
*
* @param {string} channelId - 直播后台频道号
* @param {string} appId - polyv 后台的 appId:开发设置 => 开发者信息 => AppID(应用 ID )
* @param {string} sign - 频道验证签名
* @param {string} timestamp - 当前 13 位毫秒级时间戳
* @return {Promise} - 标准 Promise 对象
*/
// 示例代码
// 注:自动请求的接口:/live/v3/applet/sdk/get-channel-detail
PolyvLiveSdk.getChannelInfo(channelId, appId, sign, timestamp)
.then(res => {
console.log(res);
})
/**
* 预览指定的ppt
*
* @param {object} config - 配置对象
* @description config - config 列表:
* el {DOMSeletor|string} - 需要显示预览ppt的dom选择器
* autoId {number|string} - pptId
* type {string} - ppt类型
* width {number|string} - 可选,ppt宽,默认100%
* height {number|string} - 可选,ppt高,默认100%
* pptNav {boolean} - 可选,是否显示ppt控制控件,默认`true`
* pptNavBottom {string} - 可选,ppt控制栏距离底部距离,例:`pptNavBottom: '50px'
* @return {function} - previewPPT 对象
*/
// 示例代码
// 需要给 el 元素设置相对定位和宽高
/*
#previewPPT{
position: relative;
width: 500px;
height: 300px;
}
*/
var previewPPT = PolyvLiveSdk.previewPPT({
el: '#previewPPT',
autoId: 1329757,
type: 'new'
});
// 示例事件
previewPPT.on('success', function () {
console.log('预览成功');
});
previewPPT.on('error', function (err) {
console.log('预览失败', err);
});
previewPPT.on('pptStatusChange', function (err) {
console.log('当前页改变', err);
});
// 实例方法
previewPPT.nextPPTPage(); // 使 ppt 切换到下一页,跟随模式下不能切到讲师未讲解的 ppt
previewPPT.prevPPTPage(); // 使 ppt 切换到上一页
// 销毁ppt预览实例
//previewPPT.destroy()
範例
概述
var liveSdk = new PolyvLiveSdk({}) // 建立 SDK 實例
實例屬性
| 屬性名稱 | 必選 | 類型 | 可選值 | 預設值 | 說明 |
|---|---|---|---|---|---|
| channelId | 是 | string | 頻道ID,支援雲課堂/直播助手/大班課發起的直播 | ||
| sign | 是 | string | POLYV 頻道資訊獲取介面用到的簽名 簽名規則 請用channelId、timestamp、appId 三個欄位拼接sign |
||
| timestamp | 是 | number | POLYV 頻道資訊獲取介面用到的時間戳 註:該時間戳需要與伺服器端獲取的簽名一致 |
||
| appId | 是 | string | POLYV帳號 appId,從 POLYV 後台獲取 | ||
| user | 是 | object | {user: string; userName: string; pic: string} | { userId: '', // 使用者ID userName: '', // 使用者暱稱 pic: '' // 使用者頭像,必須為http/https/ // 開頭連結 } userId 是聊天室中的使用者唯一識別,兩個相同的 userId 登入聊天室後,後者會將前者踢出聊天室,因此不同的聊天室使用者的 userId 需要具有唯一性,生成建議如下:1. 如果您有使用者系統,則使用使用者系統中的使用者 ID 作為登入聊天室的 userId2. 如果您沒有使用者系統,則在後端生成高度隨機的值作為登入聊天室的 userId,如:「時間戳 +5 位隨機數」、uuid 等,並將該 userId 儲存到 cookie 或本地儲存(localStorage 或 sessionStorage)中,避免每次重新整理頁面後重新生成 userId |
|
| updatePageview | 否 | boolean | false | 設定後每當呼叫實例polyv的觀看頁上的累計觀看人數會增加一個 | |
| chat | 否 | boolean | true | 是否連接聊天室,在直播模式下如果呼叫直播播放器必須連接聊天室,所以即使設定為false,在初始化直播播放器時會自動連接聊天室,回放模式下可以不連接 |
|
| keepChatDisabled | 否 | boolean | false | 直播模式是否保持不連接聊天室,在chat: false 設定後回放的場景會不連接聊天室,直播時會連接聊天室,如果需要在直播時需要保持聊天室關閉可設定該參數。需要注意的是設定後需要依賴聊天室信令的功能會不可用,如PPT、無延遲、連麥、互動功能等,chat: false設定後該參數才會生效 |
|
| lang | 否 | string | 'zh_CN' | 'en' | 'zh_CN' | 設定播放器語言 'zh_CN' : 中文 'en': 英文 |
| param4 | 否 | string | 播放器統計參數 param1、param2,param3被預設為userId和userName以及直播狀態,所以設定無效 |
||
| param5 | 否 | string | 播放器統計參數 | ||
| code | 否 | string | 跑馬燈的授權參數 | ||
| socket | 否 | object | 此參數預設會建立socket,同時支援外部傳入socket或聊天室sdk的socket 註:若使用聊天室sdk或者自行建立的聊天室,必須把實例出來的socket傳入到此欄位,不然會導致重複登入聊天室出現異常 使用方式:見如下範例 |
||
| lotteryEnabled | 否 | string | 'Y' | 'N' | 設定為'N'時,進行普通抽獎時會過濾目前使用者 |
直播SDK & 聊天室SDK 範例程式碼(以 polyv 聊天室 SDK 為例)
var chatroom = new PolyvChatRoom({ //实例聊天室SDK
roomId: channelId,
userId: userId,
nick: userName,
pic: pic,
userType: 'slice'
});
var liveSDK = new PolyvLiveSdk({ //实例直播SDK
channelId: channelId,
appId: appId,
sign: sign,
timestamp: timestamp,
socket: chatroom.chat.socket, //传入聊天室的socket
user: {
userId: userId,
userName: userName,
pic: pic
}
});
實例方法
1.初始化播放器
說明:初始化播放器,必須在頻道資訊事件觸發後呼叫參數:config 播放器配置物件
使用:liveSdk.setupPlayer(config: object)
範例程式碼:
var config = {
pptEl: '#ppt',
el: '#player',
type: 'auto',
autoplay: false,
audioMode: false,
width: '100%',
height: '100%',
pptWidth: '100%',
pptHeight: '100%',
controllerPosition: 'ppt',
controller: true,
pptNav: true,
// 回放模式需要fileId、url、sessionId
fileId: undefined,
url: undefined,
sessionId: undefined
}
// 监听频道信息并初始化播放器
liveSdk.on(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT, (event, data) => {
liveSdk.setupPlayer(config);
});
參數說明:
| 參數名 | 必選 | 類型 | 可選值 | 預設值 | 說明 |
|---|---|---|---|---|---|
| el | 是 | string | id或class | 講師區域元素 | |
| pptEl | 否 | string | id或class | ppt 文件元素選擇器,非雲課堂(三分屏)可不填, 註:僅在三分屏生效 |
|
| width | 否 | string | number | '100%' | 講師區域寬度 | |
| height | 否 | string | number | '100%' | 講師區域高度 | |
| pptWidth | 否 | string | number | '100%' | ppt區域寬度 | |
| pptHeight | 否 | string | number | '100%' | ppt區域高度 | |
| type | 否 | string | 'auto' | 'live' | 'vod' | 'record' | 'auto' | 播放器播放類型,選擇'auto'後,播放器會以直播->回放列表影片->第一個暫存影片(優先級由大到小)的優先級播放'auto': 根據頻道實際設定自動選擇播放類型'live' : 直播'vod': 回放'record': 暫存 |
| pptType | 否 | string | 'vod' | 'record' | 'vod' | 設定 ppt 類型。 用於 type: 'vod'模式下指定ppt類型,可選'record'、'vod',在使用指定暫存場景回放場次時可設定為'record',回放列表可不設定,若調用player.switchVod切換回正常回放列表的場次需傳入'vod'修改為回放列表類型![]() |
| vodType | 否 | string | 'playback' | 'vod' | 設定播放回放類型。 用於 type: 'vod'模式下回放播放列表類型(playback-回放列表,vod-點播列表),設定為vod後將使用點播播放器播放,使用點播vid播放,流量將統計到點播平台,所以vid為必填值,若設定type: 'auto',如果當前播放的是回放則按點播列表播放 |
|
| vodToken | 否 | object | ((vid: string, next: (data: VodToken) => void) => void) | VodToken | 點播加密影片驗證參數,若確認播放的點播影片存在加密影片則需傳入驗證參數,可參考 播放加密影片 範例: ![]() |
|
| responseSettings | 否 | boolean | fasle | 在設定自動播放模式type: 'auto'時播放回放是否按照Polyv後台設定播放影片 |
|
| autoplay | 否 | boolean | false | 是否自動播放,行動端因為瀏覽器限制,可能不生效 | |
| audioMode | 否 | boolean | false | 講師畫面以音訊模式播放 註:僅在行動端生效 |
|
| controller | 否 | boolean | true | 是否顯示控制欄 註:因為裝置相容問題,在行動端中建議顯示控制欄 |
|
| controllerPosition | 否 | string | 'ppt' | 'player' | 'ppt' | 控制欄顯示在哪個區域'ppt': ppt區域'player': 講師區域註:因為考慮到相容的問題,該設定只在 PC 端的三分屏生效 |
| fixedController | 否 | boolean | false | 固定顯示控制欄,設定後控制欄不跟隨滑鼠離開隱藏 註:僅在 PC 端生效 |
|
| pptNav | 否 | boolean | true | 是否顯示ppt控制元件 註:僅在三分屏生效 |
|
| pptNavBottom | 否 | string | ppt控制欄距離底部距離,例:pptNavBottom: '50px'註:僅在三分屏生效 |
||
| pptPlaceholder | 否 | boolean | false | 是否在直播模式並且當前暫無直播時在ppt區域顯示佔位圖 註:僅在三分屏生效 |
|
| fileId | 否 | string | ppt資料id,回放模式必填 | ||
| url | 否 | string | 回放影片連結,回放模式必填 | ||
| sessionId | 否 | string | |||
| clipSessionId | 否 | string | 裁剪合併影片id | ||
| vid | 否 | string | 回放id,回放模式下傳入該參數,可不傳fileId、url、sessionId |
||
| barrage | 否 | boolean | false | 是否開啟彈幕 | |
| defaultBarrageStatus | 否 | boolean | true | 播放器載入時彈幕轉台是否顯示開啟 | |
| switchPlayer | 否 | boolean | false | 是否在控制欄顯示ppt與player切換按鈕,用於實現主副屏切換,需要監聽player實例的'switchPlayer' 事件做處理,行動端不響應該事件註:僅在三分屏生效 |
|
| controllerEl | 否 | HTMLElement | 控制欄區域,設定後控制欄不跟隨ppt與播放器的位置,設定後點擊全屏會將控制欄所在元素全屏,可以實現全屏後同時顯示ppt與講師 註:僅在三分屏生效 |
||
| useH5Page | 否 | boolean | false | 是否開啟微信端H5page設定 | |
| fullscreenEl | 否 | HTMLELement | 可設定點擊控制欄全屏按鈕進入全屏的元素,也可以使用liveSdk.player.setFullscreenEl(el?: HTMLElement): void 更新設定,el為空時則使用預設值註:僅在PC端非IE的場景下生效 |
||
| theme | 否 | object | 設定部分播放器樣式 { playerBackgroundImage:'string' | false, // 讲师背景图,false 去掉默认背景图playerBackgroundColor:'', // 讲师背景颜色(css颜色,如'red'、'#ffffff'、'rgb(0,0,0)'),注意设置后可能被背景图遮挡pptBackgroundImage: '', // ppt背景图pptBackgroundColor:'' // ppt背景颜色} |
||
| showPPTFullscreenButton | 否 | boolean | false | 是否在ppt中顯示全屏按鈕 該全屏效果只是實現頁面全屏,可能會與頁面本身樣式有衝突導致全屏時樣式異常,所以開發時如果用到該功能注意看看有沒有樣式衝突,有的話可監聽 liveSdk.player.on('PPTFullscreenChange') 事件進行調整註:僅在行動端生效 |
|
| warmUpImg | 否 | string | 設定暖場圖片 | ||
| warmUpImgType | 否 | string | 'contain' | 'cover' | 'cover' | 設定暖場圖片的適配方式 'cover' : 拉伸覆蓋 'contain' : 保持圖片比例 |
| warmUpImgBgColor | 否 | string | '#212121' | 十六進位顏色值,當warmUpImgType設定為contain 時,設定圖片未覆蓋區域的顏色 註:僅在行動端生效 |
|
| skinConfig | 否 | object | 修改播放器非直播狀態、音訊模式、直播暫停時佔位圖 { streamStop: '' , // 图片地址,用于修改暂无直播时居中图标streamStopTxt: '', // 用于修改暂无直播时显示的文字,默认为'当前暂无直播',需要streamStop有效streamPause: '', // 图片地址,用于修改直播暂停状态时居中图标streamPauseTxt: '', // 用于修改直播暂停时显示的文字,默认为'休息一会 稍后继续',需要streamPause有效audioMode: '', // 图片地址,用于修改音频模式时居中图标audioModeTxt: '', // 用于修改音频模式时显示的文字,默认为'当前为音频模式',需要audioMode有效audioModeVod: '', // 用于修改音频模式回放背景占位图,优先级低于audioModebgColor: '', // 设置streamStop, streamPause, audioMode后自定义的背景颜色} |
||
| webviewAutoplay | 否 | boolean | false | webview場景支援自動播放(需要webview支援自動播放) 非webview場景也可以使用,強制自動播放,安卓端可能會有黑屏問題 註:僅在直播以及直播回放生效 |
|
| speed | 否 | boolean | false | 是否顯示切換倍速控制項 | |
| webPageFullScreen | 否 | boolean | false | 是否開啟網頁全屏 註:僅在行動端生效 |
|
| fullScreenOrientation | 否 | string | 'portrait' \ 'landscape' \ 'none' | 'none' | 網頁全屏方向 註:僅在行動端生效 |
2.重新載入播放器
說明:目前支援播放器播放類型為 live 場景的使用,例如當前客戶端沒有推流,使用者開啟頁面,過一段時間後客戶端開始推流,可呼叫此方法重新整理播放器
使用:liveSdk.reloadPlayer(): void
範例程式碼:
liveSdk.setupPlayer({
// ...
type: 'live'
// ...
});
// 监听流状态变化刷新播放器
liveSdk.on(PolyvLiveSdk.EVENTS.STREAM_UPDATE, function() {
console.log('流状态改变');
liveSdk.reloadPlayer();
});
3.設定 token
說明:SDK 設定介面 token,用於一些互動功能介面的請求,如按讚(呼叫按讚前需呼叫此方法設定 token)。
參數:token 取得方法
使用:liveSdk.setApiToken(token: string)
範例程式碼:
liveSdk.setApiToken('token');
4.切換回放場次
說明:切換回放場次,用於切換具體播放場次影片
參數:sessionData 需要播放場次的場次資料
使用:liveSdk.switchVod(sessionData: object)
回放操作demo
範例程式碼:
/**
* 切换回放场次,用于切换具体播放场次视频
*
* @param {object} sessionData - 需要播放场次的场次数据
* @return
*/
liveSdk.setupPlayer({
// ...
type: 'vod'
fileId,
url,
sessionId
});
// data 数据是该场次数据,可通过 liveSdk.getPlaybackLists(...) 获取
liveSdk.switchVod({
fileId: data.videoId,
url: data.url,
sessionId: data.channelSessionId
});
//or
liveSdk.setupPlayer({
// ...
type: 'vod'
vid
});
liveSdk.switchVod({
vid: data.videoPoolId
});
5. 取得回放列表
說明:切換回放場次,用於切換具體播放場次影片
使用:liveSdk.getPlaybackLists(page: number, pageSize: number, type: 'playback'|'vod' = 'playback): Promise
範例程式碼:
liveSdk.getPlaybackLists(1, 5)
.then(function(data) {
console.log(data);
});
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| page | number | 頁數 |
| pageSize | number | 每頁筆數 |
| type | string | playback: 回放列表 vod: 點播列表,點播列表需使用點播播放器播放 |
6. 取得章節列表
說明:取得章節列表,僅在三分屏生效
使用:liveSdk.getChapterLists(fileId: string, type: string): Promise
範例程式碼:
/**
* 获取章节列表,注:仅在三分屏生效
* @return {Promise} - 标准 Promise 对象
*/
// 示例代码
liveSdk.getChapterLists('28acd4bd4526a6daa8368949e7c31713', 'record')
.then(res => {
console.log(res);
})
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| fileId | string | ppt 資料 ID |
| type | string | 章節類型 playback:回放 record:暫存 |
7. 發送聊天訊息
說明:發送聊天訊息
使用:liveSdk.send(message: string, callback?: (data: string) => void): void
範例程式碼:
/**
* 发送聊天信息
*/
// 示例代码
liveSdk.send('这是一条聊天信息')
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| message | string | 聊天內容 |
8. 向講師發送提問私訊
說明:向講師發送提問私訊
使用:liveSdk.sendQuestion(message: string): void
範例程式碼:
/**
* 向讲师发送提问私聊信息
*/
// 示例代码
liveSdk.sendQuestion('这是一条提问信息')
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| message | string | 私聊內容 |
9. 發送答題卡回答內容
說明:發送答題卡回答內容
使用:liveSdk.sendAnswer(option: string, questionId: string, callback: Function): void
範例程式碼:
/**
* 发送答题卡回答内容。
* 1.结合 PolyvLiveSdk.EVENTS.GET_TEST_QUESTION_CONTENT 使用,获取到 questionId。
* 2.结合 PolyvLiveSdk.EVENTS.GET_TEST_QUESTION_RESULT 获取到答题卡结果,需要讲师点击发送结果。
* 3.结合 PolyvLiveSdk.EVENTS.STOP_TEST_QUESTION,了解到讲师停止答题。
*/
// 示例代码
liveSdk.sendAnswer(
option,
questionId,
function (res) {
console.log(res);
}
)
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| option | string | 答案卡答案, 'A' | 'ABC' |
| questionId | string | 答案卡題目ID |
| callback | Function | 發送成功回呼 |
10. 發送自訂訊息
說明:發送自訂訊息,聊天室會廣播這些資訊,由使用者自行定義資料結構,除觀看端外,其他端收到訊息不會解析
使用:liveSdk.sendCustomMessage(messsage: object, callback?: (data: Object) => void): void
範例程式碼:
/**
* 发送自定义消息,聊天室会广播这些信息,由用户自行定义数据结构
*
* @param {object} - config 配置对象
*/
// 示例代码
liveSdk.sendCustomMessage({
EVENT: 'myMessage', // 自定义消息类型,事件字符长度不大于 20
version: '1.0', // 自定义消息版本
emitMode: 0, // 可选,是否广播给自己,0表示广播所有人包括自己,1表示广播给所有人除了自己,2表示只发送给自己
roomId: channelId, // 频道号
data: { // 自定义消息内容,由客户定义
message: value
},
tip: '我的自定义消息', // 提示语
});
// 收到自定义消息(仅限于sendCustomMessage发送)
liveSdk.on(PolyvLiveSdk.EVENTS.CUSTOM_MESSAGE, function (event, data) {
console.log('监听自定义消息: ',data);
});
11.傳送按讚訊息
說明:傳送按讚訊息。【使用按讚方法前,需確保已呼叫 liveSdk.setApiToken()】
使用方式:liveSdk.sendLike(times: number): void
範例程式碼:
/**
* 发送点赞数
*/
// 示例代码
liveSdk.sendLike(1)
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| times | number | 按讚數量,最大不可超過30 |
12. 取得歷史聊天記錄
說明:取得歷史聊天記錄,參數非必填,預設10筆,配合PolyvLiveSdk.EVENTS.HISTORY_MESSAGE事件使用,收到事件可於聊天列表前方新增資料
使用方式:liveSdk.getHistoryMessage(pageNum: number, start: number): liveSdk
範例程式碼:
// 点击查看更多
var more = true;
$more.on('click', function() {
if (!more) return;
// 消息返回后在 `PolyvLiveSdk.EVENTS.HISTORY_MESSAGE` 中返回信息
liveSdk.getHistoryMessage();
})
// 监听历史内容更新
liveSdk.on(PolyvLiveSdk.EVENTS.HISTORY_MESSAGE, function (event, data, begin, end) {
console.log(event, data, begin, end);
// 渲染数据
render(data);
if (data.length < 10) {
console.warn('已经没有更多历史消息');
more = false;
}
});
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| pageNum | number | 需要取得的訊息數量 |
| start | number | 代表距離最新一則聊天訊息往前的第幾則訊息開始 |
13. 銷毀播放器
說明:銷毀播放器
使用:liveSdk.destroy(disconnectSocket: boolean = true): void
範例程式碼:
/**
* 销毁播放器
*
* @param {string} disconnectSocket - 是否断开 socket
*/
// 示例代码
liveSdk.destroy(true);
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| disconnectSocket | boolean | 是否斷開 socket |
14. 發送簽到
說明:發送簽到
使用:liveSdk.toSign(checkinId: string, callback: Function): void
範例程式碼:
/**
* 发送签到。
* 结合 PolyvLiveSdk.EVENTS.SIGN_IN 使用,收到讲师发起签到消息和获取到 checkinId。
* 结合 PolyvLiveSdk.EVENTS.STOP_SIGN_IN 使用,收到讲师停止签到消息,收到后不允许发送签到
*/
// 示例代码
liveSdk.toSign(
checkinId,
res => console.log(res)
);
參數說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| checkinId | string | 簽到 ID |
| callback | function | 發送簽到回呼,回傳的 code 說明如下 200:簽到成功 301:簽到的使用者未登入聊天室 302:房間不在簽到狀態中 303:該使用者已簽到 |
15. 發送問卷答案
說明:發送問卷答案
使用:liveSdk.sendQuestionnaireAnswer(questionnaireId: string, answer: [], callback: Function): void
範例程式碼:
/**
* 发送问卷答案
* 结合 PolyvLiveSdk.EVENTS.START_QUESTIONNAIRE 使用,收到问卷消息和获取到 questionnaireId、questionId
* 结合 PolyvLiveSdk.EVENTS.STOP_QUESTIONNAIRE 使用,了解到讲师停止问卷
*/
// 示例代码
liveSdk.sendQuestionnaireAnswer(
questionnaireId,
[
{
questionId: questionId,
answer: 'A'
}
],
function(res){
console.log(res);
}
)
參數說明:
| 參數名稱 | 類型 | 說明 |
|---|---|---|
| questionnaireId | string | 檔案 ID |
| answer | array | 答案列表 與文件 ANSWER_QUESTIONNAIRE 中的 answer 一致 |
| callback | function | 發送回調 200:答題成功 301:問卷已結束 302:該學生已提交過答案 303:使用者未登入,即目前使用者不在聊天室 |
16.查詢當前頻道直播狀態
說明:查詢當前頻道直播狀態,僅在開啟直播錄製時有效。
使用:liveSdk.getCloudClassRoomStatus(): Promise
範例程式碼:
liveSdk.getCloudClassRoomStatus()
.then(function(resp) {
if (resp.status === 'success') {
// liveStart(开始上课)、liveRecovery(恢复)、liveSuspend(暂停)、liveFinish(结束)
console.log('当前直播状态为:' + resp.data.status);
}
});
17.修改暱稱
說明:修改暱稱,可監聽 PolyvLiveSdk.EVENTS.SET_NICK_STATUS 事件以取得修改狀態。
使用:liveSdk.setNick(newName: string): void
範例程式碼:
// 调用该方法设置新的昵称
liveSdk.setNick('新的昵称');
// 监听修改状态
liveSdk.on(PolyvLiveSdk.EVENTS.SET_NICK_STATUS, function(event, resp) {
if (resp.status === 'success') {
// 修改成功,需要页面记录设置的昵称以便下次进来用同样的昵称
console.log(`修改昵称成功,新的昵称为:${resp.nick}`)
} else {
console.log(`修改昵称失败 ${resp.message}`)
}
});
實例 player 物件
liveSdk.player: 呼叫 setupPlayer 後建立的播放器實例,可用於控制播放器播放相關互動
物件屬性
物件屬性,何時可以取得?
- 當呼叫
setupPlayer後建立的播放器實例,才能取得的物件屬性:currentTime、playbackRate、cameraStatus、supportFullScreen、fullScreen、barrageStatus、levels、level - 需等待
loadedmetadata事件後,才能取得的物件屬性:duration、volume、paused、lines、line、currentPPTPage、totalPPTPages
範例程式碼:
// 示例代码
liveSdk.player.on('loadedmetadata', function () {
console.log('获得当前视频时长');
console.log(liveSdk.player.duration);
});
| 屬性名稱 | 類型 | 回傳說明 |
|---|---|---|
| duration | number | 影片長度,單位:秒 |
| currentTime | number | 目前播放的進度 |
| playbackRate | number | 目前倍速 |
| volume | number | 目前音量 |
| cameraStatus | boolean | 目前講師攝影機是否被關閉 |
| paused | boolean | 目前是否為暫停播放狀態 |
| supportFullScreen | boolean | 是否支援全螢幕 |
| fullScreen | object | 播放器全螢幕實例,內部封裝了進入全螢幕及退出全螢幕的方法,可對頁面任意 DOM 操作 |
| lines | number | 目前頻道有多少條線路,需在 loadedmetadata 時間後存取 |
| line | number | 目前播放的線路 0/1 |
| currentPPTPage | number | 目前顯示的 PPT 頁碼,若目前顯示 PDF 或白板則回傳 1 |
| totalPPTPages | number | 目前使用的 PPT 總頁數,若目前使用 PDF 或白板則回傳 1 |
| barrageStatus | boolean | 目前彈幕狀態 |
| levels | number | 目前的碼率數,行動端暫不支援 |
| level | number | 目前的清晰度,0/1/2 遞增,如果頻道只有一個碼率則回傳 0,行動端暫不支援 |
#####全螢幕範例說明
liveSdk.player.fullScreen.request($dom: HTMLElement): void:將指定元素進入全螢幕狀態,在行動裝置中僅對 video 元素生效,實際支援度需視瀏覽器而定。
liveSdk.player.fullScreen.exit(): void:退出全螢幕狀態。
範例程式碼:
console.log('获取播放器全屏实例', liveSdk.player.fullScreen);
// 将指定元素进入全屏状态移动端中只在video中生效,具体需要看浏览器支持度,注意,参数是 DOM 元素
liveSdk.player.fullScreen.request(document.querySelector("#ppt > div"))
// 退出全屏状态
liveSdk.player.fullScreen.exit()
物件方法
demo 範例程式碼:
liveSdk.player.setVolume(1); // 设置播放器音量
| 方法名 | 參數 | 說明 |
|---|---|---|
| setVolume | (volume: number) | 設定播放器音量,範圍[0, 1] 行動裝置無效,採用裝置本身音量控制 |
| play | 恢復播放影片 | |
| pause | 暫停播放影片 | |
| togglePlay | 交替恢復暫停播放影片 | |
| resize | 重新整理 PPT 尺寸,播放期間若對 PPT 容器尺寸有變更,PPT 尺寸可能異常,在變更尺寸後呼叫此方法恢復正常尺寸 直播中設定無效 |
|
| seek | (time:number) | 請求到指定播放進度,單位:秒 |
| setRate | (rate: number) | 切換倍速,可選 0.5、1、1.25、1.5、2(行動裝置受裝置限制,不支援切換倍速) 直播中暫不支援切換倍數 |
| switchCamera | (hide: boolean) | 是否隱藏講師攝影機 |
| switchLine | (line: number) | 切換當前線路,line 由 number 0 遞增,代表線路1、線路2... |
| switchPPTDocMode | (control: boolean) | 直播時切換 PPT 模式,設定 true PPT 可由使用者自行控制 PPT 內容,不跟隨客戶端控制(自由模式),反之。呼叫回傳是否切換成功(跟隨模式) |
| nextPPTPage | 使 PPT 切換到下一頁,跟隨模式下不能切到講師未講解的 PPT | |
| prevPPTPage | 使 PPT 切換到上一頁 | |
| sendBarrage | (text: string, color: string) | 發送彈幕 text 為彈幕內容,color 為彈幕顏色,如 '#ffffff';必須設定 barrage: true |
| hideBarrage | 隱藏彈幕 | |
| showBarrage | 恢復彈幕顯示 | |
| toggleBarrage | 交替隱藏彈幕 | |
| resizeBarrage | 重新整理彈幕尺寸,播放器尺寸更新時呼叫 | |
| switchLevel | (level: number) | 切換清晰度,由 0 遞增 |
| changePPTNavVisible | (hide: boolean) | 隱藏顯示 PPT 翻頁控制項 |
| setFullscreenEl | (el: HTMLElement) | 更新全螢幕元素設定,el 為空時則使用預設值 |
物件事件
demo 範例程式碼:
liveSdk.player.on('playing', function () {
console.log('恢复播放');
});
| 事件名稱 | 說明 |
|---|---|
| playing | 恢復播放 |
| pause | 暫停播放 |
| timeupdate | 播放進度更新 |
| loadedmetadata | 影片載入成功可準備播放,可對播放器進行 play()、pause() 等操作 |
| ended | 播放結束 |
| ratechange | 倍速改變 |
| volumechange | 音量改變 |
| lineChanged | 線路改變 |
| barrageStatusChange | 彈幕狀態改變,返回 true(開啟彈幕)、false(關閉彈幕) |
| switchPlayer | 點擊控制欄切換按鈕觸發,可用於切換 ppt 與講師位置,切換樣式需自行實作 |
| levelChanged | 清晰度改變,返回切換後清晰度 |
| error | 影片播放錯誤 |
| switchMainScreen | 切換主副螢幕播放器回呼,初始化播放器時會收到一次回呼為當前初始值 'player' | 'ppt' |
| mutedAutoplay | 靜音自動播放回呼,因受限於瀏覽器自動播放策略,在不支援自動播放時會採取靜音自動播放策略,此時會觸發該事件,可用於對使用者進行相應提示,讓使用者恢復音量在非无延迟的pc端才支持 |
PPT 操作相關事件
範例程式碼:
liveSdk.player.on('pptStatusChange', function(data) {
/*
{
page: 3, // 当前是第几页
total: 30, // 当前ppt总页数
type: 'ppt' // ('ppt'|'whiteboard') 当前显示类型,ppt或白板
}
*/
console.log(data);
});
| 事件名稱 | 說明 |
|---|---|
| pptStatusChange | ppt 狀態改變,包含目前頁數變更(ppt 更換、ppt 與白板切換)、翻頁,請注意白板狀態時無法翻頁 |
| whiteboardOpened | 講師開啟白板 |
| whiteboardClosed | 講師關閉白板,恢復為 PPT |
| PPTFullscreenChange | ppt 全螢幕狀態變化,設定 showPPTFullscreenButton: true 後才會觸發 |
彈幕使用說明
- 需要自行監聽聊天室的聊天訊息事件,並呼叫
liveSdk.player.sendBarrage方法傳送彈幕 - 彈幕顯示在控制欄所在的播放器,行動裝置固定顯示在講師畫面處
- 若播放器尺寸發生變化,需呼叫
liveSdk.player.resizeBarrage()重新整理彈幕
實例事件
事件方法
liveSdk.on(event: string, func: Function) 事件監聽方法
範例程式碼:
/**
* 事件监听方法
*
* @param {string} event - 绑定事件名称
* @param {Function} func(event: string, data: object) - 事件回调函数
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT, function (event, data) {
console.log('事件:',event);
console.log('数据:',data);
});
綁定事件
範例程式碼:
/**
* 绑定事件,只触发一次
*
* @param {string} event - 绑定事件名称
* @param {Function} func(event: string, data: object) - 事件回调函数
*/
// 示例代码
liveSdk.once(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT, function (event, data) {
console.log('事件:',event);
console.log('数据:',data);
});
解除事件綁定
範例程式碼:
/**
* 解除事件绑定
*
* @param {string} event - 绑定事件名称
* @param {Function} func - 事件回调函数
*/
// 示例代码
liveSdk.off(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT, function () {
console.log('解除事件绑定');
});
事件列表
1.頻道資訊獲取完成
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT(event: string, data: object)
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT, function (event,data) {
console.log('频道信息获取完成', data);
});
data 回傳參數詳情
| 屬性名 | 類型 | 說明 |
|---|---|---|
| channelId | number | 直播頻道 ID |
| userId | string | 直播使用者 ID |
| name | string | 直播頻道名稱 |
| desc | string | 直播頻道描述 |
| publisher | string | 主持人姓名 |
| likes | number | 目前按讚數 |
| pageView | number | 累計觀看人數 |
| coverImage | string | 直播圖示 |
| status | string | 直播狀態 Y(目前正在直播)、N(目前暫無直播) |
| startTime | string | 直播開始時間 |
| stream | string | 頻道串流名稱 |
| roomId | string | 聊天室的房間號碼,如果頻道未分配房間,則為頻道號 |
| scene | string | 直播場景,alone(活動拍攝)、ppt(三分屏)、topclass(大班課) |
| splashEnabled | string | 引導圖開關,Y(開)、N(關) |
| splashImg | string | 引導圖片 |
| warmUpImg | string | 暖場圖片地址 |
| warmUpFlv | string | 暖場影片地址 |
| playbackEnabled | string | 後台回放開關,Y(開)、N(關) |
| hasPlayback | boolean | 是否有回放影片 |
| sessionId | string | 頻道目前場次資訊,若目前未直播,則回傳上一場直播的場次 ID |
| watchStatus | string | 觀看頁狀態,live(直播中)、playback(回放中)、end(已結束)、waiting(未開始) |
| playbackOrigin | string | 回放影片來源,後台設定的回放類型,record(暫存列表)、playback(回放列表)、vod(隨選列表) |
| resolutionWidth | number | 解析度寬度 |
| resolutionHeight | number | 解析度高度 |
| country | string | 城市 |
| watchThemeModel | object | 觀看頁主題資訊 { pageSkin: string; defaultTeacherImage: string; watchLayout: 'ppt' | 'player' } |
| recordFileSimpleModel | object | 頻道錄製檔案, 沒有錄製影片時,該欄位值為 null { m3u8: string | null mp4: string | null fileId: string; channelSessionId: string; duration: number; [propName: string]: string | number | null } |
| channelMenus | Array | 自訂選單列表 [{ menuId: string, // 選單 ID menuType: string, // 選單類型 desc(直播介紹)、tuwen(圖文直播)、quiz(諮詢提問)、text(圖文選單)、chat(互動聊天)、iframe(推廣外部連結) name: string, // 選單名稱 ordered: number, // 選單排序,從 1 開始 content: string // 選單內容 }] |
2. 回放章節初始化完成
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.PLAYBACK_INIT(event: string, data: object)
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.PLAYBACK_INIT, function (event,data) {
console.log('回放章节初始化完成', data);
// data返回数据
{
sessionId: '123',
fileId: '123'
}
});
3. 串流狀態更新,可用來判斷目前是否有直播正在推流
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.STREAM_UPDATE(event: string, status: 'live'|'end')
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.STREAM_UPDATE, function (event,status) {
console.log('流状态更新', status);
liveSdk.reloadPlayer();// 刷新播放器
});
4. 非本人的使用者發言
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.SPEAK(event: string, data: object)
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.SPEAK, function (event,data) {
console.log('收到非本人的用户发言', data);
// data返回聊天信息数据
{
EVENT: 'speak',
content: 'test', // 聊天具体内容
currentUser: false, // 是否为当前用户
custom: false, // 是否是自定义消息
formatTime: '2019-07-02 14:12',
id: '65975130-9c90-11e9-94b0-fd61e3983999', // 消息id
reward: false,
time: 1562047960506,
user: { // 用户信息
banned: false,
channelId: '275682',
clientIp: '61.144.146.199',
nick: 'polyv',
pic: '//livestatic.videocc.net/v_314/assets/wimages/missing_face.png',
roomId: '275682',
sessionId: 'f8qnsda4zq',
uid: 'Ph4UtYfnxQo7pZK6AkbP',
userId: '1562047951865',
userType: 'slice',
}
}
});
5. 本人的發言
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.SEND_MESSAGE(event: string, data: object)
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.SEND_MESSAGE, function (event,data) {
console.log('本人的发言', data);
// data返回聊天信息数据, 和 非本人的用户发言 返回的数据一致
})
6. 發送提問訊息回呼
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.S_QUESTION(event: string, data: object)
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.S_QUESTION, function (event,data) {
console.log('发送提问消息回调', data);
// data返回数据
{
EVENT: 'S_QUESTION',
content: '1+1=多少',
currentUser: true,
custom: false,
reward: false,
roomId: '275682',
user: {
// ... 用户信息
}
}
})
7. 管理員或講師回答提問
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.T_ANSWER(event: string, data: object)
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.T_ANSWER, function (event,data) {
console.log('管理员或讲师回答提问', data);
// data返回数据
{
EVENT: 'T_ANSWER'
content: '等于2'
roomId: '275682'
s_userId: '1559030433536', // 被回答用户id
user: {
// ... 用户信息
}
}
})
8. 收到自訂訊息
程式碼範例:
/**
* 事件名称:PolyvLiveSdk.EVENTS.CUSTOMER_MESSAGE(event: string, data: object)
* 一般由 https://help.polyv.net/#/live/api/v4/chat/send_custom_message 发起才会触发此回调
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.CUSTOMER_MESSAGE, function (event,data) {
console.log('收到自定义消息', data);
// data返回数据,具体数据结构由用户自行定义
})
9.清除聊天記錄回調
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.REMOVE_HISTORY
* 清除聊天记录,页面可收到该消息后清除页面聊天内容
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.REMOVE_HISTORY, function () {
console.log('清除聊天记录回调');
})
10.清除某一條聊天訊息回調
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.REMOVE_CONTENT(event: string, data: object)
* 清除某一条聊天信息,页面可收到该消息后清除相应聊天内容
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.REMOVE_CONTENT, function (event,data) {
console.log('清除某一条聊天信息', data);
// data返回数据,被删除消息内容
{
EVENT: 'removeContent',
id: '65975130-9c90-11e9-94b0-fd61e3983999', // 被删除消息的id
roomId: '275682'
}
})
11. 取得歷史聊天資訊完成
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.HISTORY_MESSAGE(event: string, data: object)
* 获取历史聊天信息完成
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.HISTORY_MESSAGE, function (event,data) {
console.log('获取历史聊天信息完成', data);
// data返回数据,历史聊天信息,内容为speak事件内容组成的数组
})
12. 發言失敗
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.PROHIBIT_TO_SPEAK
* 发言失败,可能由于聊天室为连接但发送聊天消息等发送错误触发
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.PROHIBIT_TO_SPEAK, function () {
console.log('发言失败', data);
})
13. 使用者被禁止發言
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.ADD_SHIELD
* 用户被禁止发言
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.ADD_SHIELD, function (event, data) {
console.log('用户被禁止发言', data);
// data返回数据, 可以根据data里面返回的userId来判断是哪个用户
})
14. 使用者被恢復發言
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.REMOVE_SHIELD
* 用户被恢复发言
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.REMOVE_SHIELD, function (event, data) {
console.log('用户被恢复发言', data);
// data返回数据, 可以根据data里面返回的userId来判断是哪个用户
})
15. 頻道內用戶登入事件
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.LOGIN(event: string, data: object)
* 频道内用户登录事件
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.LOGIN, function (event,data) {
console.log('频道内用户登录事件', data);
// data返回数据,用户信息
{
EVENT: 'login',
onlineUserNumber: 3, // 当前在线人数
timeStamp: 1562051459569,
user: {
// 用户信息
}
}
})
16.頻道內用戶退出事件
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.LOGOUT(event: string, data: object)
* 频道内用户退出事件
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.LOGOUT, function (event,data) {
console.log('频道内用户退出事件', data);
// data返回数据,用户信息
{
EVENT: 'loginOut',
channelId: '275682',
onlineUserNumber: 2, //当前在线人数
roomId: '275682',
timeStamp: 1562051345281,
uid: 'LVexVHpKvK0KOU_0Ak4L',
}
})
17. 頻道內用戶踢出房間
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.LOGIN_REFUSE(event: string, data: object)
* 频道内有用户被踢出房间,包含用户以及本身
* 一般应用于再次登录后需要获取是否被踢出房间
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.LOGIN_REFUSE, function (event,data) {
console.log('频道内有用户被踢出房间,包含用户以及本身', data);
// data返回数据, 被踢用户数据
{
EVENT: 'LOGIN_REFUSE',
data: {referField: '1559030433537', type: 'userId'}
}
})
18. 當前使用者被踢出房間
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.BAN_USER_ROOM
* 当前用户被踢出房间,这时候会自动断开聊天室连接
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.BAN_USER_ROOM, function () {
console.log('当前用户被踢出房间');
})
19. 收到講師發起簽到訊息
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.SIGN_IN(event: string, data: object)
* 收到讲师发起签到消息,可调用 `liveSdk.toSign` 方法发送签到
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.SIGN_IN, function (event,data) {
console.log('收到讲师发起签到消息', data);
// data返回数据, 签到数据
{
EVENT: 'SIGN_IN',
data: {
checkinId: '07ff9330-9c99-11e9-8aa1-37da87', // 签到id
createTime: 1562051668963,
limitTime: '30', // 签到时间,页面需要根据这个时间显示倒计时,结束后不允许再签到
message: '各位同学开始签到了' // 签到提示文案
}
roomId: '275682'
}
})
20. 收到講師停止簽到訊息
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.STOP_SIGN_IN
* 收到讲师停止签到消息,收到后不允许发送签到
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.STOP_SIGN_IN, function () {
console.log('收到讲师停止签到消息');
})
21. 收到公告訊息
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.BULLETIN(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.BULLETIN, function (event,data) {
console.log('收到公告消息', data);
// data返回数据, 公告消息
{
EVENT: 'bulletin',
content: '公告内容'
}
})
22. 刪除公告訊息
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.REMOVE_BULLETIN
* 删除公告消息
*/
liveSdk.on(PolyvLiveSdk.EVENTS.REMOVE_BULLETIN, function () {
console.log('删除公告消息');
})
23. 收到問卷訊息
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.START_QUESTIONNAIRE(event: string, data: object)
* 收到问卷消息, 回答后可使用`liveSdk.sendQuestionnaireAnswer` 方法发送答案
*/
liveSdk.on(PolyvLiveSdk.EVENTS.START_QUESTIONNAIRE, function (event,data) {
console.log('收到问卷消息', data);
// data返回数据, 问卷内容,与polyv 聊天室 START_QUESTIONNAIRE 事件数据一致
})
24.講師停止問卷
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.STOP_QUESTIONNAIRE(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.STOP_QUESTIONNAIRE, function (event,data) {
console.log('讲师停止问卷', data);
// data返回数据, 问卷ID
})
25. 取得問題內容
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.GET_TEST_QUESTION_CONTENT(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.GET_TEST_QUESTION_CONTENT, function (event,data) {
console.log('获取问题内容', data);
// data返回数据, 答题卡消息
})
26. 獲取答題結果
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.GET_TEST_QUESTION_RESULT(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.GET_TEST_QUESTION_RESULT, function (event,data) {
console.log('获取答题结果', data);
})
27. 停止作答
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.STOP_TEST_QUESTION(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.STOP_TEST_QUESTION, function (event,data) {
console.log('停止答题', data);
})
28. 直播錄製暫停
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.ON_PAUSE_RECORD(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.ON_PAUSE_RECORD, function (event,data) {
console.log('直播录制暂停(课间休息)', data);
})
29. 恢復錄製
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.ON_START_RECORD(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.ON_START_RECORD, function (event,data) {
console.log('恢复录制(休息结束,恢复直播)', data);
})
30. 退出錄製
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.ON_EXIT_RECORD(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.ON_EXIT_RECORD, function (event,data) {
console.log('退出录制(下课)', data);
})
31. 下課/結束直播
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.FINISH_CLASS(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.FINISH_CLASS, function (event,data) {
console.log('讲师点击下课按钮下课/结束直播', data);
})
32. 修改暱稱狀態回調
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.SET_NICK_STATUS(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.SET_NICK_STATUS, function (event,data) {
console.log('修改昵称状态回调', data);
})
33. 點讚事件
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.LIKES(event: string, data: object)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.LIKES, function (event,data) {
console.log('收到点赞事件', data);
})
34. 最大並發登入事件
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.MAX_VIEWER_LOGIN(event: string)
*/
liveSdk.on(PolyvLiveSdk.EVENTS.MAX_VIEWER_LOGIN, function (event) {
console.log('收到最大并发登录事件', data);
// TODO:跳出页面/页面提示
})
35. 頻道內同一用戶重複登入事件
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.RELOGIN(event: string, data: object)
* 频道内同一用户重复登录事件
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.RELOGIN, function (event,data) {
console.log('频道内同一用户重复登录事件', data);
// data返回数据,用户信息
{
EVENT: 'RELOGIN',
channelId: 'channelId',
user: {
// 用户信息
}
}
})
36. 頻道資訊初始化失敗回呼
範例程式碼:
/**
* 事件名称:PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT_ERROR(error: string, msgDetails: string)
* 频道初始化失败的回调
*/
// 示例代码
liveSdk.on(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT_ERROR, function (error, msgDetails) {
console.log('频道初始化失败', error, msgDetails);
})


