Skip to content
wangqiang edited this page Feb 10, 2018 · 2 revisions

直播问答API接口

所有对外的API接口都在LQAClient类中。在使用前,请先查看接入事项。

流程图

流程图

创建LQAClient对象

在创建LQAClient 对象时,需要用到LQAConfig,注意,此时必须设置好LQAConfig中的参数。负责会出现RuntimeException异常。

        LQAConfig mConfig = new LQAConfig();
        mConfig.setIMInfo(QAConfig.mIMkey, QAConfig.mIMToken);
        // 设置问答房间
        mConfig.setChatMessageId(QAConfig.mQARoom);
        // 设置Ksyun key
        mConfig.setKsyunAppKey(QAConfig.mKsyunKey);
        // 设置当前用户是否可参与答题环节,默认不可以
        mConfig.setUserContestStatus(true);
        // 设置问题下发用户
        mConfig.setServerUserId(QAConfig.mServerUserId);
        // 设置最大使用复活卡次数
        mConfig.setMaxExtraLiveUsedInContest(QAConfig.mMaxExtraLiveUsedInContest);
        // 设置当前用户有多少复活卡
        mConfig.setUserExtraLiveCount(QAConfig.mUserExtraLiveCount);
        // 设置当前用户id
        mConfig.setUserId(QAConfig.mUid);
        // 设置当前直播场次
        mConfig.setContestLiveId(QAConfig.mContestSequenceId);
        // 设置播放器对象
        mConfig.setMediaPlayer(mPlayer.getPlayer());
        // 设置播放地址
        mConfig.setPlayerUrl(QAConfig.mLiveUrl);

        // 创建LQAClient对象
        LQAClient mClient = new LQAClient(mConfig);

按流程调用相应的方法

  1. init
        /**
         * @param Context 上下文
         * @param OnLQAEventListener 状态监听,可以收到init状态、聊天室加入状态和答题等状态
         */
        mClient.init(Context, OnLQAEventListener);
  1. release
        if (mClient != null) {
        // 当问答直播退出时需要调用。注意和init搭配使用
            mClient.release();
        }
        mClient = null;

以上两个方法,必须在合适的位置进行调用

  1. 设置相应的回调
        // 设置聊天监听器,如果您不使用SDK提供的聊天功能,可以不进行这个设置
        mClient.setOnLiveChatMessageListener(OnLiveChatMessageListener);
        // 设置答题监听器,当您收到onShowQuestion消息时,需要正确解析问题并且展示问题
        mClient.setOnLQAQuestionListener(OnLQAQuestionListener);
        // 设置结果监听,当您收到onResult消息时,需要正确解析数据并且展示答题结果
        mClient.setOnLQAResultListener(OnLQAResultListener);
        // 设置最终答题结果监听,收到这个消息后,表示所有的题目和答案都下发完成
        mClient.setOnLQAMatchResultListener(OnLQAMatchResultListener);
  1. 答题
/**
 * @param msgID 标示您回答的是那道题,通过OnLQAQuestionListener监听器返回的LQAQuestion获取
 * @param option 您回答的选项,必须是LQAQuestion中返回的选项
 * @param signalingTimestamp 计算请求信令的时间戳,毫秒,由AppServer颁发。
 * @param requestSignaling 请求信令,由AppServer根据服务端Token、AppKey、UID、Timestamp计算md5得出
 */
public void answer(final String msgID, String option, String signalingTimestamp, String requestSignaling);

注意

  • answer调用成功与失败可以通过OnLQAEventListener获取到
  • 当answer调用失败时,您不可以继续答题,此时复活卡也不会生效,会直接导致用户被淘汰
  • 当answer调用成功后,如果回答失败,会自动扣除复活卡
  • 中途进入直播时,不允许答题
  • setUserContestStatus设置为false时不允许答题,默认允许答题
  1. 加入聊天室
// 如果您需要聊天功能,必须调用加入聊天室的方法,聊天室ID请让服务器分配,如果客户端随意固定或者生成聊天ID,会导致消息丢失等问题
mClient.joinRoom(String);

注意,调用joinRoom的时机

  • 仿照Demo中LivePlayerActivity类里OnLQAEventListener的实现
  • 在收到LQAClient.IM_QA_CONNECT消息时,表示初始化成功,此时才可以调用joinRoom方法
  • 当joinRoom调用成功后,会直接通知您LQAClient.IM_CHAT_CONNECT状态
  1. 发送聊天消息
 /**
  * @param TextMessage 融云定义消息体封装,建议您和Demo一样直接传输json格式字符串
  * @param IRongCallback.ISendMessageCallback 消息发送状态,当消息发送完成时您就可以进行消息的展示了
  *
  */
 mClient.sendLiveChatMessage(TextMessage, IRongCallback.ISendMessageCallback);
  1. 获取已经使用的复活卡数量
// 获取已经使用的复活卡数量。注意:是已经使用的,不是剩余的
mClient.getUsedReviveCardCount()

用好getUsedReviveCardCount接口 和Demo中QAActionUI一样,通过getUsedReviveCardCount接口返回的数据,您可以做一些状态判断

  • 如果调用getUsedReviveCardCount和上次记录的结果一样,并且您的回答是错误的,这就说明您已经被淘汰。 (注意:最后一题是不会使用复活卡的,也不会自动复活)
  • 如果您调用getUsedReviveCardCount比上次记录的结果大,就说明您当前题答错了,已经自动为您使用了复活卡
  • getUsedReviveCordCount 数量改变,只在onResult被回调时发生
  1. 获取版本号
// 通过以下方法获取使用的SDK版本
mClient.getVersion()