微信觀看小程式SDK 3.10
DEMO 位址
產品介紹
概述
polyv小程式SDK為微信小程式提供了直播播放、點播播放、文件繪製等功能。且提供了一套元件,供用戶靈活組合自己的業務邏輯。
配置微信直播權限
SDK 播放直播使用了微信 live-player 和連麥 live-pusher,需要先通過類目審核(詳見微信觀看小程式 SDK 類目申請資質要求),再在小程式管理後台,「開發」-「介面設定」中自助開通對應元件權限。
功能特性
| 功能 | 表述 |
|---|---|
| 影片 | 支援直播影片與隨選影片觀看。暫不支援加密的影片 |
| 文件 | 文件與畫筆展示,暫不支援PPT動畫 |
| 教學連線 | 支援語音與視訊連線功能。支援1對1連線 |
| 線上聊天 | 支援線上聊天 |
閱讀對象
本文為技術文件,需要閱讀者:
- 具備基本的小程式開發能力
- 準備接入Polyv影片雲或已接入的客戶
- 對Polyv影片雲使用方法有基礎的了解
使用步驟
開發準備
取得Access Key
登入保利威直播後台 - 雲直播 - 開發設定 - 身分認證
微信介面白名單設定
request合法域名
https://miniapp.agoraio.cn
https://uni-webcollector.agora.io
https://router.polyv.net
https://api.polyv.net
https://prtas.videocc.net
https://rtas.videocc.net
https://hls.videocc.net
https://player.polyv.net
https://livestatic.videocc.net
https://livejson.polyv.net
https://live.polyv.net
https://doc-2.polyv.net
https://doc.polyv.net
https://img.videocc.net
https://liveimages.videocc.net
使用连麦功能需加上以下域名:
https://uap-ap-web-1.agora.io
https://uap-ap-web-2.agoraio.cn
https://uap-ap-web-3.agora.io
https://uap-ap-web-4.agoraio.cn
https://report-ad.agoralab.co
https://rest-argus-ad.agoralab.co
https://uni-webcollector.agora.io
https://cloud.tencent.com
https://yun.tim.qq.com
https://webim.tim.qq.com
socket合法域名
wss://chat.polyv.net
wss://miniapp.agoraio.cn
SDK 使用方法
SDK 使用 TypeScript 程式碼,因此需要下載最新的開發者工具才能支援。原生支援 TypeScript
SDK 提供了自訂元件,Polyv 提供一套完整的業務邏輯,供使用者開箱即用。同時也提供了 player 播放元件、ppt 文件元件、chatroom 聊天室元件等,供使用者靈活組合自己的業務邏輯。
在使用之前需要在app.js的onLaunch中呼叫setApp方法
方法一(推薦):傳入 verifyUrl 驗證介面
import plv from '*/sdk/core/index';
onLaunch() {
plv.setApp({
apiId: '',
verifyUrl: ''
});
}
verifyUrl 驗證介面規則
(1)小程式請求 verifyUrl 介面時,會帶上下列參數(參數數量/參數名稱不固定)。需將所有除 sign 以外的參數依字母順序排列後,配合 appSecret 按規則進行 MD5 加密,並回傳給小程式。
請求參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| appId | string | 帳號 appId【詳見取得金鑰】 |
| timestamp | number | 13 位毫秒級時間戳 |
| sign | string | verifyUrl 校驗 sign 參考(2)verifyUrl 校驗 |
回應參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| code | Integer | 回應狀態碼,200為成功回傳,非200為失敗【詳見全域錯誤說明】 |
| status | String | 回應狀態文字資訊 |
| message | String | 回應描述資訊,當code為400或500時,輔助描述錯誤原因 |
| data | Object | 回應成功時回傳帳號可用直播分鐘數資訊【詳見data欄位說明】 |
verifyUrl 介接 PHP 程式碼範例:
<?php
$appSecretKey = 'Your appSecretKey';
$sign = $_GET['sign'];
$appId = $_GET['appId'];
$timestamp = $_GET['timestamp'];
// 获取url query并转换成数组
parse_str($_SERVER["QUERY_STRING"], $params);
// 获取除sign外的其他参数的拼接字符串
$concated = sort_param($params);
// STEP 1
// 计算接口请求是否合法
$outPutData = '';
$verifyUrlSign = strtoupper(md5("plyMinApp".$concated."plyMinApp"));
if ($sign != $verifyUrlSign) {
$outPutData = '{"code": 200, "message" : "invalid sign", "status": "error", "data": ""}';
echo($outPutData);
return;
}
// STEP 2
// 输出正确sign返回给小程序
$outPutSign = strtoupper(md5($appSecretKey.$concated.$appSecretKey));
$outPutData = '{"code": 200, "message" : "", "status": "success", "data": {"sign": "'.$outPutSign.'"}}';
echo($outPutData);
/**
* 将参数按照ASCKII升序 key + value + key + value ... +value 拼接
* @return [type] [description]
*/
function sort_param($params){
ksort($params);
$sort_result = "";
foreach ($params as $key => $val) {
if(!is_null($val) && $key != 'sign'){
$sort_result=$sort_result.$key.$val;
}
}
return $sort_result;
}
?>
(2)verifyUrl 驗證
校驗 sign 規則:
1.concated 的值為將參數 appId、timestamp 及其他參數按照 ASCII 升序以 key + value + key + value ... + value 的方式拼接。
2.verifyUrlSign 取值 plyMinApp${concated}plyMinApp字串拼接後的大寫 MD5 值
$verifyUrlSign = strtoupper(md5("plyMinApp".$concated."plyMinApp"));
成功範例
{
"code":200,
"status":"success",
"message":"",
"data":{
"sign":"3DDE7222C4264F225931053A661889BA"
}
}
異常範例
{
"code": 400,
"status": "error",
"message": "invalid signature.",
"data": ""
}
方法二:傳入 polyv 雲直播的 access key
由於在小程式程式碼中,apiSecret 是以明文顯示的,存在小程式被反編譯的風險。因此建議使用方法一。
import plv from '*/sdk/core/index';
onLaunch() {
plv.setApp({
apiId: '',
apiSecret: ''
});
}
元件的使用
一、使用 polyv 元件。可參考 demo 的 polyv 目錄
將 SDK 程式碼複製到自己的專案中,並在使用到 SDK 的頁面 JSON 檔案中引入元件。
{ "usingComponents": { "polyv": "*/sdk/components/polyv/polyv" } }在 WXML 中使用 polyv 組件
<view> <polyv /> </view>在頁面的
onload中呼叫init方法,在onUnload中呼叫destroy方法
init 方法初始化觀看,取得頻道詳細資訊、初始化 socket 事件等。
import plv from '*/sdk/core/index';
// onLoad
onLoad() {
const options = {
channelId: '', // 频道ID
openId: '', // 用户openId
userName: '', // 用户名
avatarUrl: '', // 用户头像
param4: '', // 自定义参数
param5: '', // 自定义参数
};
plv.init(options);
}
// onUnload
onUnload() {
plv.destory();
}
二、靈活組合元件。可參考 demo 的 polyv-sub
在使用到 SDK 的頁面 JSON 檔案中引入元件
{ "usingComponents": { "player": "*/sdk/components/player/player", "ppt": "*/sdk/components/ppt/ppt", ... } }在 wxml 中使用元件,傳入必要的參數。
<view> <player videoOption="{{ videoOption }}" bind:onLiveStatusChange="playerLiveStatusChange" /> <ppt /> </view>在頁面的
onload方法中呼叫init方法。import plv from '*/sdk/core/index'; Page({ onLoad() { const options = { ... }; options.plvInsideUse = true; // 区分是学一学还是sdk, 当为 true 时开启抽奖模块。 plv.init(options) .then(data => { const { detail, chat } = data; // 处理业务逻辑 }) .catch(err => { // 异常处理 }); }, onUnload() { plv.destory(); } });
元件詳細說明
使用以下元件之前,都需要先在 JSON 中透過 usingComponents 欄位引入。
1. polyv 元件
參數介紹
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| userBanned | Event | 否 | - | 使用者被踢出時觸發 |
| onError | Event | 否 | - | 發生異常 |
| allowDanmu | Boolean | 否 | true | 是否允許使用彈幕 |
| skinAlwaysShow | Boolean | 否 | false | 是否持續顯示播放器面板 |
| usePlayerSkin | Boolean | 否 | true | 是否使用播放器面板 |
<polyv
bind:userBanned="handleUserBanned"
bind:onError="handlePolyvError"
allowDanmu="{{ false }}"
skinAlwaysShow="{{ true }}"
usePlayerSkin="{{ false }}"
hasAnswerCard="{{ true }}"
/>
2. player 播放器元件
player 元件可以播放直播和點播。直播使用 live-player,模拟器不能播放,查看效果请用真机。 點播模擬器不能播放加密视频,查看效果请用真机。
參數介紹
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| videoOption | Object | 是 | 空 | 播放器初始化參數(詳情見下方 JS 程式碼) |
| vodSeek | Number | 否 | 0 | 回放影片 seek 操作時間點(mode 為 vod 時,或暫存才生效) |
| onLiveStatusChange | Event | 否 | - | 直播串流狀態(mode 為 live 時觸發) |
| onLiveStorageProgress | Event | 否 | - | 直播暫存當前播放時間 |
| onVodProgress | Event | 否 | - | 點播回放當前播放時間 |
| onVodEnd | Event | 否 | - | 點播回放播放結束 |
| onError | Event | 否 | - | 出現異常 |
| allowDanmu | Boolean | 否 | true | 是否允許使用彈幕 |
| skinAlwaysShow | Boolean | 否 | false | 是否一直顯示播放器皮膚 |
| usePlayerSkin | Boolean | 否 | true | 是否使用播放器皮膚 |
| hasAnswerCard | Boolean | 否 | false | 是否使用答題卡 |
注意:skinAlwaysShow 的優先級高於 usePlayerSkin,若將 skinAlwaysShow 設為 true,則 usePlayerSkin 參數將失效。
<player
videoOption="{{ videoOption }}"
allowDanmu="{{ false }}"
skinAlwaysShow="{{ true }}"
usePlayerSkin="{{ false }}"
bind:onLiveStatusChange="playerLiveStatusChange"
bind:playerVodProgress="playerVodProgress"
bind:onVodEnd="playerVodEnd"
bind:onLiveVodEnd="playerVodEnd"
bind:onError="playerError"
/>
// ###### 播放直播或者暂存视频 #######
videoOption = {
mode: 'live',
uid: userId, // 直播频道uid
cid: channelId, // 直播频道channelId
isAutoChange: true, // 自动切换直播和暂存。
vodsrc: '', // 指定回放地址。有暂存视频的情况下,传入暂存视频的mp4或者m3u8。
pipMode: '', // 是否使用小窗模式,默认为undefined。相关参数设置详情参考注意2.2
forceVideo: false, // 是否强制使用video标签作为播放器(播放m3u8),建议使用live-player
statistics: { // 播放器自定义统计参数, 如需添加param4、param5参数,详情见下面init方法详解
param1: 'param1', // 用户ID
param2: 'param2', // 用户昵称
},
// logoConfig: {
// enable: false, // 是否显示logo
// position: 'tl',// logo位置1 左上,2 右上(默认)3左下 4 右下
// opacity: 0.5, // 透明度
// src: '' // logo图片的url
// }
};
// 直播状态改变: 只有在mode为live时才会触发。
playerLiveStatusChange(e) {
const status = e.detail.status;
if (status === 'live') {
// 开始直播
}
if (status === 'end') {
// 结束直播
}
}
// 获取回放播放进度
playerVodProgress(e) {
console.info(e.detail.currentTime, '----currentTime---');
}
// 播放器异常捕获
playerError(e) {
console.info(e.detail, '-----e-----');
}
/*
* 回放播放结束事件
* onVodEnd: 点播回放列表播放结束触发,返回当前播放结束点播视频vid
* onLiveVodEnd: 直播暂存播放结束时触发,返回当前暂存视频播放地址
*/
playerVodEnd(e) {
console.info(e.detail.curVodVid, '---curVodVid---');
}
// ###### 播放点播视频 #######
videoOption = {
mode: 'vod',
vodVid: '' // 播回放时vodVid为videoPoolId
};
// 在mode为vod时,从点播切换到直播状态,云课堂和普通直播监听直播开始的方法不同。
// 1. 普通直播通过轮询api.getOrdinaryLiveStatus(stream)获取当前的状态
// 2. 云课堂通过chat.on(chat.events.SLICESTART, () => {})监听直播开始
注意:
2.1 skinAlwaysShow 與 usePlayerSkin 的優先順序
skinAlwaysShow 的優先順序高於 usePlayerSkin,若將 skinAlwaysShow 設為 true,則 usePlayerSkin 參數將失效。
2.2 pipMode
參數範圍與觸發條件請參考官方API live-player組件參數。官方說明基礎庫需升級至2.11.0才支援小窗功能,建議登入公眾號平台 -> 設定 -> 基礎庫最低版本設定 進行升級。
3. PPT 文件元件
參數介紹
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| chatData | Object | 是 | - | 頻道詳情 |
| videoId | String | 否 | - | 當前播放回放的videoId |
| vidCurrentTime | Number | 否 | - | 當前回放播放時間 |
| pptSize | Object | 是 | - | 文件尺寸{ height , width } |
<ppt
chatData="{{ detail }}"
videoId="{{videoId}}"
vidCurrentTime="{{vodPlayerProgress}}"
pptSize='{{pptSize}}'
/>
// 直播时传入chatData
// 播放点播时传入回放的videoId和当前回放播放时间
4. concat 連麥元件
參數介紹
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| channelDetail | Object | 是 | - | 頻道詳細資訊 |
| applyData | Object | 是 | {show:false, txt: '申請連線'} | |
| show | Event | 是 | - | 房間連麥狀態:開啟/關閉 |
| refreshStatus | Event | 是 | - | 連麥狀態變更:舉手apply/等待允許cancel/掛斷stop |
| stop | Event | 是 | - | 停止連麥 |
<concat
id="test"
channelDetail="{{ channelDetail }}"
applyData="{{ applyData }}"
bind:show="handleShowConcatApply"
bind:refreshStatus="handleRefreshStatus"
bind:stop="handleStop"
/>
//js
// 监听当前房间连麦状态
// 弃用
handleShowConcatApply(data) {
// data.detail.status为open/close
// open: 当前房间已开启连麦
// close: 当前房间未开启连麦
},
// 监听当前用户连麦状态
// 只有在房间开启了连麦功能后,用户才能进行连麦
handleRefreshStatus(data) {
// data.detail: {
// show: true/false, // 是否能连麦
// type: 'apply'/'cancel'/'stop', // 当前连麦类型:未举手/已举手/连麦中
// txt: '' //对应连麦类型:申请连线/取消申请/挂断连线
//}
},
// 结束连麦
handleStop(data) {
console.info(data.detail, '---stop----');
}
連麥組件相關方法說明
- apply
說明:連線控制方法,「舉手」/「取消申請」都需要呼叫此方法,呼叫此方法後元件會判斷當前連線狀態,觸發對應的事件。 - stop
說明:掛斷連線
5. chatroom 聊天室元件
<chatroom bind:onTapBulletin="handleShowBulletin" />
handleShowBulletin() {
console.info('===点击聊天室公告按钮触发====');
}
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| showBulletin | Boolean | 否 | true | 是否顯示公告按鈕 |
| skin | String | 否 | black | 皮膚(black、white) |
6. quiz 諮詢提問元件
<quiz />
7. playback 往期元件
參數介紹
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| playbackList | Array | 否 | [ ] | 回放列表 |
| nextVod | String | 否 | '' | 當前播放的回放videoPoolId |
| onTapPlayback | Event | 否 | 空 | 點擊回放回調函數 |
<playback
playbackList="{{ playbackList }}"
nextVod="{{ currentVodId }}"
bind:onTapPlayback="handlePlayback"
/>
// 回放列表通过api.getPlayBackVideos(channelId)获取
// 播放下一个回放,nextVod传入当前的回放videoPoolId
// 点击某个回放时,通知player播放
handlePlayback(e) {
const { videoPoolId, videoId } = e.detail;
}
8. 章節元件
參數介紹
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| chapterList | Array | 是 | [ ] | 章節列表 |
| vodCurTime | Number | 是 | 0 | 目前播放時間 |
| onTapChapter | Event | 否 | 空 | 點擊章節回呼函數 |
<chapter
bind:onTapChapter="handleChangeChapter"
vodCurTime="{{ vodPlayerProgress }}"
chapterList="{{ chapterList }}"
/>
// 回放列表通过api.getChapterRecords(channelId)获取
// vodCurTime: 当前播放器的播放时间
// onTapChapter
handleChangeChapter(e) {
const chapter = e.detail.chapter;
}
9. menu-custom 自訂選單元件
參數介紹
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| parseHtml | String | 是 | 空 | 富文字字串 |
10. sign 互動功能簽到元件
<sign bind:onSignShow="handleSignShow" />
handleSignShow() {
console.info('====收到签到开始事件,显示签到弹窗时触发====');
}
11. question 互動功能問卷組件
<question zIndex="2000" />
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| zIndex | Number | 否 | - | 設定彈窗層級 |
12. answer-card 互動功能答題卡元件
<answer-card
class="c-answer-card"
answerCardSize="{{ answerCardSize }}"
bind:onAnswerCardShow="handleShowAnswerCard" />
handleShowAnswerCard() {
console.info('=====收到答题事件,显示答题卡弹窗时触发====');
}
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| answerCardSize | Object | 否 | 空 | 設定答題卡彈窗大小 { height: 400, width: 750 } |
| zIndex | Number | 否 | - | 設定彈窗層級 |
| class | String | 否 | 空 | 設定元件樣式 |
13. lottery 互動功能抽獎元件
<lottery zIndex="{{ lotteryIndex }}"/>
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| zIndex | Number | 否 | - | 設定彈窗層級 |
14. bulletin 互動功能公告元件
<bulletin
show="{{ true }}"
zIndex="2001"
bulletinStr="公告显示内容"
bind:onClose="handleHideBulletin"/>
handleHideBulletin() {
console.info('===点击关闭公告按钮触发===');
}
| 參數 | 類型 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| show | Boolean | 是 | false | 用於控制何時顯示公告 |
| bulletinStr | String | 是 | '' | 公告內容 |
公告可以自訂顯示內容,如果需要顯示聊天室的公告訊息,需要監聽聊天室的「BULLETIN」事件,以取得公告內容並顯示。
使用 API
功能使用時的核心方法為 setApp、init、destroy、api 方法。
setApp
設定 polyv 雲直播的 appId、appSecret。通常在 app.js 的 onLaunch 方法中呼叫。
init
初始化成功返回频道详情:detail、聊天室:chat、网络请求:api
plv.init(options)
.then(r => {
// 初始化成功
const { detail, chat } = r;
})
.catch(err => {
// 初始化失败
console.error(err);
});
自訂統計參數設定
如果需要傳入自訂互動統計資料 param4、param5,需在 options 中加入參數; 若是直接引用 polyv 元件,則直接在 options 中加入 param4、param5 即可;若是單獨引用 player 元件,則需設定 player 元件參數 videoOption。
直接引用 polyv 元件範例:
plv.init(options = {..., param4: 'param4', param5: 'param5'})
.then(r => {
// 初始化成功
const { detail, chat } = r;
})
.catch(err => {
// 初始化失败
console.error(err);
});
單獨使用player元件範例
<player
videoOption="{{ videoOption }}"
/>
videoOption = {
statistics: {
param4: 'param4',
param5: 'param5'
}
}
plv.init(options = {..., param4: 'param4', param5: 'param5'})
.then(r => {
// 初始化成功
const { detail, chat } = r;
})
.catch(err => {
// 初始化失败
console.error(err);
});
相關參數說明
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
| appId | String | 是 | polyv雲直播appId |
| appSecret | String | 是 | polyv雲直播appSecret |
| channelId | String|Number | 是 | 頻道號 |
| openId | String | 是 | 小程式用戶openId |
| userName | String | 是 | 用戶暱稱 |
| avatarUrl | String | 是 | 用戶頭像 |
頻道詳情:detail
| 屬性 | 說明 |
|---|---|
| channelMenus | 後台設定的頁面選單 |
| scene | 目前直播類型:ppt 雲課堂 / alone 一般直播 |
| status | 直播狀態:Y 直播中 / N 非直播 |
| name | 直播名稱 |
| desc | 直播介紹 |
| publisher | 主持人 |
| userId | 使用者ID |
| likes | 讚數 |
| pageView | 觀看數 |
| channelId | 頻道號 |
| playbackEnabled | 回放功能是否開啟 |
| hasPlayback | 是否有回放 |
| playbackList | 回放列表 |
| recordFileSimpleModel | 直播暫存 |
| warmUpImg | 暖場圖片 |
| warmUpFlv | 暖場影片 |
| coverImage | 封面圖 |
| stream | 直播串流名稱 |
| startTime | 直播開始時間 |
| sessionId | 場次ID |
| chatToken | 聊天室驗證權杖 |
聊天功能:chat
- chat.events 所有事件
| 參數 | 說明 |
|---|---|
| CONNECT | 連線 socket |
| DISCONNECT | 取消連線 |
| ERROR | socket 錯誤 |
| RECONNECT_ATTEMPT | 重新連線開始 |
| CLOSE_ROOM | 房間關閉 |
| OPEN_ROOM | 房間開啟 |
| SYSTEM_MESSAGE | 系統訊息 |
| SPEAK | 使用者發言 |
| SPEAK_ERROR | 發言錯誤 |
| SPEAK_CENSOR | 發言審核 |
| FLOWERS | 送花 |
| CHAT_IMG | 圖片 |
| REWARD | 獎勵資訊 |
| CUSTOMER_MESSAGE | 自訂資訊 |
| SERVER_ERROR | 後台出錯 |
| KICK_USER | 使用者被踢 |
| REMOVE_HISTORY | 清除聊天記錄 |
| REMOVE_CONTENT | 清除某條聊天記錄 |
| HISTORY_MESSAGE | 取得歷史聊天資訊 |
| SEND_MESSAGE | 發送訊息成功 |
| PROHIBIT_TO_SPEAK | 禁止發言 |
| LOGIN | 登入 |
| LOGOUT | 登出 |
| LOGIN_REFUSE | 禁止登入 |
| SLICESTART | 雲端課堂上課 |
| MICROPHONE | 連線麥克風 |
| ALLOW_MICROPHONE | 允許連線麥克風 |
| SUCCESS_MICROPHONE | 連線麥克風成功 |
| JOIN_CHANNEL_FAIL | 加入頻道失敗 |
| BAN_USER_ROOM | 禁止進入聊天室 |
| UPDATE_QUESTION_HISTROY | UPDATE_QUESTION_HISTROY |
| S_QUESTION | 學生提問 |
| T_ANSWER | 教師或助教或管理員回答問題 |
chat.socket 獲取 socket 物件
chat.on 監聽 events 事件
chat.off 卸載 events 事件
chat.trigger 觸發事件
chat.options傳入的 optionschat.roomClosed 房間是否關閉
chat.teacherData 老師資訊
聊天室 API 相關
| api | params | desc |
|---|---|---|
| historyCount | 無 | 獲取聊天室歷史訊息數量 |
| getHistoryMessage() | start I int: 開始行數 end | int: 結束行數 請求範例: chat.getHistoryMessage(end, start, data => {console.log(data)}) |
獲取聊天室記錄 return | Array |
| hasMoreHistory() | 無 | 查詢是否有歷史記錄 |
| getOnlineUserList() | 請求範例: chat.getOnlineUserList().then(res => {console.log(res)}) |
獲取頻道在線列表 return | Object |
| sendFlower() | 無 | 送花 |
| sendLike() | num | int: 點讚次數 請求範例: chat.sendLike(1) |
發送點讚 |
| send() | msg | String: 文字訊息 請求範例: chat.send(‘Hello,World’) |
發送訊息 |
諮詢室 API 相關
chat.getQuestionHistoryMessage() 取得諮詢歷史記錄
- chat.sendQuestion() 發送諮詢訊息
連麥
chat.checkCurrentStatus() 查詢當前連線狀態
- chat.cancelJoinChannel() 取消加入連線
destory
在頁面的 onUnload 方法中呼叫該方法,重置資料。
api
- api.getUserId(openId) 取得 userId
- api.getChannelDetail(channelId) 取得頻道詳細資訊
- api.getOrdinaryLiveStatus(channelId) 取得一般直播狀態
- api.getPlayBackVideos(channelId) 取得回放列表資料
- api.getChapterRecords(params) 取得章節資訊
- params.id 暫存檔案 ID / 回放影片的 videoId(當 type 為 record 時,id 為暫存檔案的 fileId;當 type 為 playback 時,id 為回放影片的 videoId)
- params.channelId 頻道 ID
- params.type 類型(record:暫存類型;playback:回放類型)
- api.getChannelKey(channelId) 取得連線密鑰
錯誤訊息說明
| 錯誤碼 | 說明 |
|---|---|
| 31000 | 點播影片資料獲取失敗 |
| 31001 | vid 不能為空 |
| 31002 | 點播已過期 |
| 31003 | 帳戶無流量 |