保利威文档中心

幫助中心

互動功能發起端 SDK

更新時間:2022-03-30 15:43:13

概述

本專案是保利威直播互動功能發起端(即開播端、管理端等)邏輯層 SDK,可基於本 SDK 開發互動功能的發起介面。

使用說明

安裝

npm i -S @polyv/interactions-launch-sdk

引入

import * as InteractionsLaunchSDK from '@polyv/interactions-launch-sdk';

全域初始化

注意:無論使用哪個互動功能,都要先執行全域初始化。全域初始化只需要執行一次。

按照以下步驟進行全域初始化:

  1. 設定日誌列印等級。

日誌會列印到控制台並上傳到 polyv 伺服器。日誌上傳服務預設開啟,可透過 Logger.disableUploadLog() 關閉。如無特別原因,請保持開啟日誌上傳,以便我們協助您定位線上問題。

InteractionsLaunchSDK.Logger.setLogLevel(InteractionsLaunchSDK.Logger.LogLevel.TRACE);
  1. 使用 setChatInfo() 方法傳入 polyv 聊天室實例物件和資料。

互動功能發起端 SDK 內部依賴於 polyv 聊天室服務。您可以基於 polyv 聊天室 SDK 快速接入該服務。PolyvChatRoom 是聊天室 SDK 提供的全域物件,更多使用細節請查看這份文件

setChatInfo() 方法支援多次呼叫。例如,在聊天室重連後需要重新設定 chatsocketId 屬性。

// 初始化聊天室 SDK
var chatroom = new PolyvChatRoom({
  version: '2.0', // 注意这里要使用 '2.0'
  roomId: '', // 房间号
  userId: '', // 用户在聊天室的 uid
  pic: '', // 用户头像
  nick: '', // 用户昵称
  userType: '', // 用户类型:'teacher' 老师 / 'assistant' 助教 / 'manager' 管理员
  token: '', // 校验码
  // 其它具体参数信息请参考 polyv 聊天室 SDK
});

// 在 connect 事件回调中拿到聊天室实例和 socketId 后再传入到互动 SDK 中
chatroom.chat.on('connect', () => {
  const socket = chatroom.chat.socket;

  // 设置聊天室实例对象和数据
  InteractionsLaunchSDK.setChatInfo({
    // 聊天室实例对象。
    chat: socket,
    // 连接聊天室的 socketId
    socketId: socket.id,
    // 用户在聊天室的 uid
    userId: '',
  });
});
  1. 使用 setChannelInfo() 方法初始化頻道資訊。

    該方法支援多次呼叫。注意:當 sessionId 發生變化時(一般是直播狀態發生改變時發生),必須呼叫該介面更新配置。例如,setChannelInfo({ sessionId: 'new sessionId' })

    此外,在切換房間時,也可以呼叫該介面更新 channelIdroomId

    InteractionsLaunchSDK.setChannelInfo({
      channelId: '',
      roomId: '',
      // 频道类型。默认为 'normal'。
      channelType: '',
      // 直播场次 id
      sessionId: '',
    });
    
  2. 設定授權。SDK 內部請求頻道 API 介面時需要使用到存取令牌等資訊。

setAuthorization() 接受一個非同步函數作為參數,該非同步函數需要回傳一個包含 appId、timestamp、channelToken、channelId 四個屬性的物件。

appId 是帳號 AppId;timestamp 是 13 位時間戳;channelId 是頻道號;channelToken 的取得請參考取得頻道API的存取令牌

取得授權流程介紹:

timing_diagram

InteractionsLaunchSDK.setAuthorization(async () => {
  // 此处异步获取频道API的访问令牌,并返回互动 SDK 中实现授权所需的参数。
  return {
    appId: '',
    timestamp: '',
    channelId: '',
    channelToken: '',
  };
});
  1. (可選)如果有域名客製化的需求,可設定自訂域名。

    InteractionsLaunchSDK.setCustomDomain({
      // 可选。聊天室接口域名。默认为 'apichat.polyv.net'
      chat: '',
      // 可选。直播业务域名。默认为 'api.polyv.net'
      api: '',
    });
    
  2. 按需要實例化各互動功能類別。

    // 以签到功能为例
    // 1. 实例化 CheckIn 类
    const checkInCore = new InteractionsLaunchSDK.CheckIn();
    // 2. 注册事件监听函数
    checkInCore.on('show-result', handler1);
    

API 文件

點擊此處可查看 API 文件。

功能實踐

此處僅提供各功能參考文件連結。

版本更新

暫無

联系客服,在线咨询