概述

活动消息服务

消息服务器,目前只用于观看直播时使用,用于接收观看直播时的一些消息处理

private class MessageEventCallback implements MessageServer.Callback {
	@Override
	public void onEvent(MessageServer.MsgInfo messageInfo) {
		switch (messageInfo.event) {
			case MessageServer.EVENT_PPT_CHANGED://PPT翻页消息
				documentView.showDoc(messageInfo.pptUrl);
				break;
			case MessageServer.EVENT_DISABLE_CHAT://禁言
				break;
			case MessageServer.EVENT_KICKOUT://踢出
				break;
			case MessageServer.EVENT_OVER://直播结束
				break;
			case MessageServer.EVENT_PERMIT_CHAT://解除禁言  
				break;
			case MessageServer.EVENT_START_LOTTERY://抽奖开始
				break;
			case MessageServer.EVENT_END_LOTTERY://抽奖结束
				break;
			case MessageServer.EVENT_NOTICE: //公告消息
				break;
			case MessageServer.EVENT_SIGNIN: //签到消息
				break;
			case MessageServer.EVENT_QUESTION: // 问答开关
				break;
			case MessageServer.EVENT_DIFINITION_CHANGED// PC端切换分辨率
				break;
			case MessageServer.EVENT_SURVEY:// 问卷消息
				break;
			/** 白板的操作*/
			case MessageServer.EVENT_SHOWBOARD:// 白板消息 1 开始白板 0关闭白板
				break;
			case MessageServer.EVENT_INITBOARD:// 初始化消息
				break;
			case MessageServer.EVENT_PAINTBOARD: // 绘制白板
				break;
			case MessageServer.EVENT_DELETEBOARD: // 删除白板内容
				break;
			case MessageServer.EVENT_CLEARBOARD:// 清空白板操作
				break;
			/** 文档的操作*/
			case MessageServer.EVENT_PAINTDOC:// 文档绘制
				break;
			case MessageServer.EVENT_DELETEDOC: // 删除绘制
				break;
			case MessageServer.EVENT_CLEARDOC://清楚绘制
				break;
		}
	}
	@Override
	public void onConnectFailed() {
		//连接失败
	}
	@Override
	public void onMsgServerClosed() {
		//消息关闭
	}
}

//连接消息服务器
getWatchLive().connectMsgServer ();
关闭消息服务器:
getWatchLive().disconnectMsgServer ();


1、活动结束消息

event = “MessageServer.EVENT_OVER” 当主播关闭直播的时候触发此消息

2、抽奖消息

观看直播时播主可以发起抽奖,而在移动端观看时可以接受抽奖消息,目前默认游客和参会用户都可以抽奖,而且只能被中奖一次

开始抽奖消息体 event = “MessageServer. EVENT_START_LOTTERY”

字段 描述
Num 可以中奖的数量
type 消息类型键

结束抽奖消息体msgInfo.event = “MessageServer. EVENT_END_LOTTERY”

字段 描述
type 可以中奖的数量
Msginfo.Lists 返回中奖的数组
IsLottery 是否中奖
id 当前中奖人的参会ID
LotteryID 抽奖ID

Msginfo.Lists 结构体

字段 描述
nickname 中奖昵称
user_id 用户ID
third_user_id 登陆用户名

当用户中奖后,需要提交信息,访问SDK中的submitLotteryInfo() , 所需参数如下

字段 描述
id 当前中奖人的参会ID
LotteryID 抽奖ID
name 中奖人姓名
phone 中奖人电话

VhallSDK.getInstance().submitLotteryInfo(joid_id, lottery_id, nickname, phone, 
new VhallSDK.RequestCallback() {
	@Override
	public void success() {
	
	}
	@Override
	public void failed(int errorCode, String reason) {
	
	}
});
字段 描述
10030 身份验证失败
10409 参会ID不能为空
10410 抽奖ID不能为空
10411 用户名称不能为空
10412 用户手机不能为空

3、公告消息

当PC段发送一段公共消息,消息服务器会接受到这句公共消息,用户自定义显示消息样式 event = “MessageServer.EVENT_NOTICE”

字段 描述
content 公告内容
publish_release_time 公告发布时间

4、签到消息

event = “MessageServer.EVENT_SIGNIN” 当主播正在直播,可以发布签到,观看用户必须登陆才可以签到,签到后web端会进行展示 字段 描述

字段 描述
webinar_id 活动ID
sign_id 签到ID
user_id 用户ID
sign_show_time 签到初始时间

5、问卷消息

event = “MessageServer. EVENT_SURVEY” 当主播正在直播,可以发送问卷,消息服务器会接收到survey_id ,需要使用这个survey_id 获取问卷信息

VhallSDK.getInstance().getSurveyInfo(surveyid, new SurveyDataSource.SurveyInfoCallback() {
	@Override
	public void onSuccess(Survey survey) {
		watchView.showSurvey(survey); //UI层显示
	}
	@Override
	public void onError(int errorCode, String errorMsg) {
		chatView.showToast(errorMsg);
	}
});

6、白板消息

event = “MessageServer.EVENT_SHOWBOARD” // 开启或者关闭白板 event = “MessageServer.EVENT_INITBOARD” // 初始化白板 event = “MessageServer.EVENT_PAINTBOARD” // 绘制白板 event = “MessageServer.EVENT_DELETEBOARD // 删除白板内容 event = “MessageServer.EVENT_CLEARBOARD” // 清空白板

1配置白板XML (在需要显示的界面中加入, 具体详见文档)

<com.vhall.business.widget.WhiteBoardView
        android:id="@+id/board"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

2获取到白板的2获取到白板的实例调用setStep方法 , 将消息服务器获取的信息传递进方法里就可以了

public void paintBoard(MessageServer.MsgInfo msgInfo) {
	board.setStep(msgInfo);
}
public void paintBoard(String key, List<MessageServer.MsgInfo> msgInfos) {
	board.setSteps(key, msgInfos);
}

7、PPT消息

msgInfo.event = “MessageServer.EVENT_CHANGEDOC” // 切换文档页面 msgInfo.event = “MessageServer.EVENT_PAINTDOC” // 绘制文档信息 msgInfo.event = “MessageServer.EVENT_DELETEDOC” // 删除绘制信息 msgInfo.event = “MessageServer.EVENT_CLEARDOC” // 清空绘制信息

1 配置文档XML (在需要显示的界面中加入, 具体详见文档)

<com.vhall.business.widget.PPTView
        android:id="@+id/iv_doc"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

2 获取到文档的实例调用setStep方法 , 将消息服务器获取的信息传递进方法里就可以了

  @Override
    public void paintPPT(MessageServer.MsgInfo msgInfo) {
        doc.setStep(msgInfo);
    }
 
    @Override
    public void paintPPT(String key, List<MessageServer.MsgInfo> msgInfos) {
        doc.setSteps(key, msgInfos);
    }