@polyv/interactions-launch-sdk

SDK for launching interactions of Polyv

Usage no npm install needed!

<script type="module">
  import polyvInteractionsLaunchSdk from 'https://cdn.skypack.dev/@polyv/interactions-launch-sdk';
</script>

README

互动功能发起端 SDK

概述

本项目是保利威直播互动功能发起端(即开播端、管理端等)逻辑层 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 文档。

功能实践

此处仅提供各功能参考文档链接。

版本更新

暂无