Skip to content

3_5 直播_互动

SHLURENJIA edited this page Aug 19, 2020 · 2 revisions

1 概述

1.1 使用demo的互动功能

PolyvCloudClassHomeActivityinitialAanswer()方法,就是为互动功能初始化,设置参数和设置响应用户操作的监听器。监听器的作用是往服务器发送用户行为例如签到,以及记录用户后台统计数据,例如可以在后台中查看中奖观众的信息。如果用户想要自定义互动功能,那么自定义接收socket后的行为,还要参考这里监听器的代码,向服务器发送数据。

整个互动功能只需要PolyvAnswerView和按照demo中的示例正确初始化即可。

1.2 可用离线资源

播放器的互动功能,是借助WebView来实现的,既可以加载线上资源,也可以加载离线包的资源。

互动功能借助PolyvAnswerView来实现,其中引用了sdk的PolyvAnswerWebView

//PolyvAnswerView
//为true加载web url资源,为false加载本地url资源
private static final boolean LOAD_WEB_URL =true;

根据上面的boolean来调整要加载线上资源还是离线资源,离线资源放在commonui/src/main/assets中了,而前端的源码在release下载资源里面可以下载的到。

1.3 socket事件入口

互动功能都是通过socket消息来拿到讲师端发起的操作,处理socket消息的入口在

//PolyvAnswerView
processSocketMessage(PolyvSocketMessageVO polyvSocketMessage, String event);
//根据event字符串来决定是哪一种互动应用。

以下的所有互动功能都是从这个方法里面根据event来调起WebView的。

2 公告

//显示公告
PolyvSocketEvent.BULLETIN_SHOW
//移除公告
PolyvSocketEvent.BULLETIN_REMOVE

3 签到

//开始签到
PolyvSocketEvent.START_SIGN_IN
//停止签到
PolyvSocketEvent.STOP_SIGN_IN

4 答题卡

//讲师发题
PolyvSocketEvent.GET_TEST_QUESTION_CONTENT
//讲师发送答题结果
PolyvSocketEvent.GET_TEST_QUESTION_RESULT
//截止答题
PolyvSocketEvent.STOP_TEST_QUESTION

注:0.11.0开始,已经支持评分类型的答题卡。

5 问卷

//开始问卷调查
PolyvSocketEvent.START_QUESTIONNAIRE
//停止问卷调查
PolyvSocketEvent.STOP_QUESTIONNAIRE

6 抽奖

//开始抽奖
PolyvSocketEvent.LOTTERY_START
//当前频道正在抽奖
PolyvSocketEvent.ON_LOTTERY
//停止抽奖
PolyvSocketEvent.LOTTERY_END
//未领奖的中奖人信息
PolyvSocketEvent.LOTTERY_WINNER

7 将用户行为发送到服务端

互动功能需要将用户的行为发送到服务端,例如:在答题卡事件中用户选择了某个答案、用户点击了签到、用户填写了中奖信息等。

在demo中,通过PolyvAnswerWebView.AnswerJsCallback这个回调,来监听用户行为并向服务端发送消息。具体的发送消息的接口在PolyvCloudClassHomeActivity中的initailAnswer()方法中有示例。

注意,就算不使用demo提供的互动处理逻辑,依然需要调用answerView.setAnswerJsCallback()并传入非空参数,否则会报NPE。(这一点后面会优化)

8 互动应用添加统计参数

0.15.0开始,互动应用支持添加param4,param5统计参数。这两个参数建议和播放器统计参数所添加的值相对应。 互动应用添加统计参数的方法如下:

chatManager.login(viewerId,channelId, viewerName, "头像地址", <自定义授权的头衔>, "param4","param5");

聊天室登录时带上param4,param5,在互动应用交互完成后,统计数据会自动带上参数。 更多login重载方法见v0.15.0 API