2-快速集成
閱讀準備
準備好一個保利威帳號,並在直播後台中的設定 -> 開發者設定頁面中獲取帳號直播系統中的 appId(應用 ID),appSecret(應用密鑰),userId(帳號 ID);直播->直播列表中獲取 channelId(頻道號)。若為登入回放則額外需要頻道號對應回放列表裡的 vid(回放影片 id)。
環境要求
| 名稱 | 要求 |
|---|---|
| Hbuilderx | >=4.85 |
使用方式
第一種:使用 PLVLiveScenesPluginHelper (推薦)
下載 PLVLiveScenesPluginHelper 並放入專案目錄內;如果您使用 vscode 進行開發,則可以將目錄內的 .d.ts 一併帶入,獲得更好的型別提示
使用 PLVLiveScenesPluginHelper 您將無需關心如何引入以及引入原生插件順序。
import { PLVLiveScenesPluginHelper } from "项目目录/plv-live-scense-plugin-helper";
實例化插件
建立插件實例,後續所有操作都透過該實例進行。
const plugin = PLVLiveScenesPluginHelper(options);
PLVLiveScenesPluginHelper(options)
參數 options:
| 參數名 | 類型 | 必填 | 描述 |
|---|---|---|---|
type |
PluginType | 否 | 插件類型,預設為 LiveScenesPlugin |
env |
String | 否 | 插件執行環境,預設為 development, 可選值包括 'development' 和 'production' 該值決定日誌輸出行為 |
enum PluginType {
/** 纯观看插件 */
LiveScenesPlugin = "PLV-LiveScenesPlugin",
/** 观看 + 开播复合插件 */
LiveScenesHostPlugin = "PLV-LiveUniPlugin",
}
initService(options)
初始化插件服務。在使用其他功能之前,必須先呼叫此方法。
參數 options:
| 參數名 | 類型 | 必填 | 描述 |
|---|---|---|---|
viewerId |
String | 是 | 觀看者 ID,用於唯一標識使用者,例如使用者手機號碼。 |
viewerName |
String | 是 | 觀看者暱稱。 |
viewerAvatar |
String | 是 | 觀看者頭像 URL。 |
code |
String | 否 | 跑馬燈設定代碼(可選)。 |
範例:
await plugin.initService({
viewerId: "user001",
viewerName: "UniappDemo用户",
viewerAvatar: "https://example.com/avatar.jpg",
});
setUserInfo(options)
為防止 APP 端被嗅探和反編譯到開發者設定資訊,強烈建議開發者設計自己的加密方式在伺服器端對 userId、 AppID、 AppSecret進行加密,並透過 https 協定的介面取得後重新解密,再將參數傳遞給 SDK。
設定使用者帳號資訊。在 initService 之後,進入直播間或回放前呼叫。
參數 options:
| 參數名 | 類型 | 必填 | 描述 |
|---|---|---|---|
appId |
String | 是 | 開發者在保利威平台申請的 App ID。 |
userId |
String | 是 | 開發者在保利威平台申請的 User ID。 |
appSecret |
String | 是 | 開發者在保利威平台申請的 App Secret。 |
範例:
await plugin.setUserInfo({
appId: "YOUR_APP_ID",
userId: "YOUR_USER_ID",
appSecret: "YOUR_APP_SECRET",
});
loginLiveRoom(options)
登入並進入直播房間。
參數 options:
| 參數名 | 類型 | 必填 | 描述 |
|---|---|---|---|
sceneType |
Number | 是 | 場景類型:1 為雲課堂,2 為直播帶貨。 |
channelId |
String | 是 | 頻道的唯一標識 ID。 |
範例:
await plugin.loginLiveRoom({
sceneType: 1, // 云课堂场景
channelId: "YOUR_CHANNEL_ID",
});
loginPlaybackRoom(options)
登入並進入回放房間。
參數 options:
| 參數名 | 類型 | 必填 | 描述 |
|---|---|---|---|
sceneType |
Number | 是 | 場景類型:1 為雲課堂,2 為直播帶貨。 |
channelId |
String | 是 | 頻道的唯一標識 ID。 |
videoId |
String | 是 | 影片的 Vid。 |
vodType |
Number | 是 | 回放類型:0 為單一影片回放,1 為回放列表。 |
範例:
await plugin.loginPlaybackRoom({
sceneType: 1,
channelId: "YOUR_CHANNEL_ID",
videoId: "YOUR_VIDEO_ID",
vodType: 0, // 单个视频回放
});
logoutRoomMessage(callback)
註冊一個回呼函式,當使用者退出房間時(目前僅支援 iOS)會觸發。
參數 callback:
| 參數名 | 類型 | 必填 | 描述 |
|---|---|---|---|
res |
Function | 是 | 退出房間後執行的回呼函式。 |
範例:
plugin.logoutRoomMessage((res) => {
console.log("已退出房间", res);
});
開播功能,需要整合全功能版本插件,並設定 type 為 LiveScenesHostPlugin
import {
PLVLiveScenesPluginHelper,
PluginType,
} from "../../tools/plv-live-scense-plugin-helper.mjs";
const plugin = PLVLiveScenesPluginHelper({
type: PluginType.LiveScenesHostPlugin,
});
loginStreamer
登入主播端開播
參數 options:
| 參數名 | 類型 | 必填 | 描述 |
|---|---|---|---|
channelId |
String | 是 | 頻道的唯一標識 ID。 |
password |
String | 是 | 頻道登入密碼。 |
nickname |
Number | 是 | 主播名稱。 |
範例:
plugin.loginStreamer({
channelId: "YOUR_CHANNEL_ID",
password: "YOUR_CHANNEL_PASSWORD",
nickname: "YOUR_NAME",
});
setScreenShareGroup
設定螢幕共享(僅 iOS 需要)
參數 options:
| 參數名 | 類型 | 必填 | 描述 |
|---|---|---|---|
appGroup |
String | 是 | 螢幕共享組標識 |
範例:
plugin.setScreenShareGroup(YOUR_APP_GROUP);
完整使用流程
一個典型的使用流程如下:
- 引入並實例化插件。
- 呼叫
initService初始化服務。 - 呼叫
setUserInfo設定使用者資訊。 - 根據需要呼叫
loginLiveRoom或loginPlaybackRoom進入直播或回放。
import { PLVLiveScenesPluginHelper } from "./tools/plv-live-scense-plugin-helper.js";
const plugin = PLVLiveScenesPluginHelper();
async function start() {
try {
// 1. 初始化服务
await plugin.initService({
viewerId: "user001",
viewerName: "Demo用户",
viewerAvatar: "https://example.com/avatar.jpg",
});
// 2. 设置用户信息
await plugin.setUserInfo({
appId: "YOUR_APP_ID",
userId: "YOUR_USER_ID",
appSecret: "YOUR_APP_SECRET",
});
// 3. 登录直播间
await plugin.loginLiveRoom({
sceneType: 1,
channelId: "YOUR_CHANNEL_ID",
});
console.log("登录成功");
} catch (error) {
console.error("发生错误:", error);
}
}
start();
第二種:自行引入原生插件
自行引入原生插件
const playModule = uni.requireNativePlugin("PLV-LiveScenesPlugin-PlayModule");
const configModule = uni.requireNativePlugin(
"PLV-LiveScenesPlugin-ConfigModule"
);
全功能版則是
var playModule = uni.requireNativePlugin("PLV-LiveUniPlugin-WatchPlayModule")
var configModule = uni.requireNativePlugin("PLV-LiveUniPlugin-WatchConfigModule")
觀看端設定模組 - ConfigModule
ConfigModule 封裝了帳號資訊、使用者資訊、SDK 設定功能。
開發者要播放保利威影片,需先到 保利威官網 註冊帳號,登入帳號後,進入雲直播 - 開發設定 取得 userId、 AppID、 AppSecret,並將加密得到加密串放到自己的伺服器,再在行動端透過網路取得加密串,app 本地解密,並設定給 setConfig 方法。設定模組資訊如果沒有特殊說明都需要在進入直播間前設定。
1. setViewerInfo
設定直播間使用者資訊。(直播間使用者的屬性在初始化後不允許修改)
方法:setViewerInfo()
範例:
configModule.setViewerInfo({ viewerId:"", viewerName: "", viewerAvatar: "", },
(result) => { })
參數:
| 名稱 | 類型 | 說明 |
|---|---|---|
| params.viewerId | String | 對應觀看日誌中的 使用者 ID |
| params.viewerName | String | 對應觀看日誌中的 使用者暱稱 |
| params.viewerAvatar | String | 觀看使用者的頭像 |
| callback | function {"isSuccess": 0, @"errMsg": ""} |
執行結果的 callback,返回是否成功的狀態和描述 |
2. setConfig
設定多場景的帳號屬性。為防止 APP 端被嗅探和反編譯到開發者設定資訊,強烈建議開發者設計自己的加密方式在伺服器端對 userId、 AppID、 AppSecret進行加密,並透過 https 協定的介面取得後重新解密,再將參數傳遞給 SDK。
方法:setConfig()
範例:
configModule.setConfig({
appId: "",
userId: "",
appSecret: ""
}, (result) => {
});
參數:
| 名稱 | 類型 | 說明 |
|---|---|---|
params.appId (必需) |
String | polyv 雲直播應用 ID (可在雲直播後台插件) |
params.userId(必需) |
String | polyv 雲直播帳號 ID |
params.appSecret(必需) |
String | 使用者頭像地址 polyv 雲直播應用密鑰 |
| callback | function {"isSuccess": 0, @"errMsg": ""} |
執行結果的 callback,返回是否成功的狀態和描述 |
3. setMarqueeConfig
設定自訂跑馬燈的設定屬性
方法:setMarqueeConfig()
範例
configModule.setMarqueeConfig({
code: "",
}, (result) => {
})
參數:
| 名稱 | 類型 | 說明 |
|---|---|---|
| params.code | String | 跑馬燈 code 參數設定 |
| callback | function {"isSuccess": 0, @"errMsg": ""} |
執行結果的 callback,返回是否成功的狀態和描述 |
觀看端播放模組 - PlayConfig
playModule 封裝了雲課堂、直播帶貨的直播和回放功能。
4. showFullScreenButtonOnIPad
是否在 iPad 上顯示全螢幕按鈕(僅在 iPad 雲課堂場景),需要在進入房間前呼叫
方法:showFullScreenButtonOnIPad()
範例:
playModule.showFullScreenButtonOnIPad({show:true});
參數:
| 名稱 | 類型 | 說明 |
|---|---|---|
show (必需) |
Bool(true 顯示全螢幕按鈕,false 顯示) |
5. loginLiveRoom
直播登入(雲課堂場景,帶貨直播場景登入)
方法:loginLiveRoom()
範例:
// 直播
playModule.loginLiveRoom(
1,
{
channelId: "",
liveParam4: "",
liveParam5: "",
},
(result) => {}
);
參數:
| 名稱 | 類型 | 說明 |
|---|---|---|
sceneType (必需) |
Number(1 雲課堂場景, 2 直播帶貨場景) | 直播室類型 |
params.channelId(必需) |
String | 直播的頻道號 |
params.liveParam4(非必需) |
||
params.liveParam5(非必需) |
||
| callback | function {"isSuccess": 0, @"errMsg": ""} |
執行結果的 callback,返回是否成功的狀態和描述 |
6. loginPlaybackRoom
登入回放直播間(雲課堂,帶貨直播回放登入)
方法:loginPlaybackRoom()
範例:
playModule.loginPlaybackRoom(
0,
{
channlId: "",
liveParam4: "",
liveParam5: "",
videoId: "",
vodType: 0,
},
(result) => {}
);
參數:
| 名稱 | 類型 | 說明 |
|---|---|---|
sceneType (必需) |
Number(1 雲課堂場景, 2 直播帶貨場景) | 直播室類型 |
params.channelId(必需) |
String | 直播的頻道號 |
params.liveParam4(非必需) |
||
params.liveParam5(非必需) |
||
params.videoId(必需) |
String | 回放影片 id |
params.vodType(必需) |
Number 0 回放影片 1 回放列表 | |
| callback | function {"isSuccess": 0, @"errMsg": ""} |
執行結果的 callback,返回是否成功的狀態和描述 |
7. exitRoomCallback (僅 ios)
退出直播間回呼
方法:setExitRoomCallback()
範例:
playModule.setExitRoomCallback((res) => {
Logger.info("退出房间成功");
cb && cb(res);
});
主播端設定模組
var liveModule = uni.requireNativePlugin("PLV-LiveUniPlugin-StreamerLiveModule")
var configModule = uni.requireNativePlugin("PLV-LiveUniPlugin-StreamerConfigModule")
1. setAppGroup【僅iOS有效】
螢幕共享帳號設定的 App Group
方法:setAppGroup()
範例:
configModule.setAppGroup({
appGroup:""
}, (result) => {
})
參數:
| 名稱 | 類型 | 說明 |
|---|---|---|
| params.appGroup | String | 帳號設定的 App Group |
| callback | function {"isSuccess": 0, @"errMsg": ""} |
執行結果的 callback,返回是否成功的狀態和描述 |
主播端直播模組 - LiveModule
登入開播推流
方法:loginStreamer()
範例:
playModule.loginStreamer({
channelId: "",
password: "",
nickname: ""
}, (result) => {
});
參數:
| 名稱 | 類型 | 說明 |
|---|---|---|
channelId (必需) |
String | 登入頻道號 |
password (必需) |
String | 登入密碼 |
nickname (非必需) |
String | 暱稱 |
| callback | function {"isSuccess": 0, @"errMsg": ""} |
執行結果的 callback,返回是否成功的狀態和描述 |
