Skip to content

6 设置学员唯一标识的意义

SHLURENJIA edited this page Aug 27, 2020 · 4 revisions

学员唯一标识 = viewerId = 观众id = 学员Id

学员唯一标识,viewerId,观众id,学员Id在文档和程序中表达的意思一致,正在逐渐统一名称。

另外,学员昵称,即viewerName,直播/回放的数据统计可以带上学员Id和学员昵称,也能用来作直播聊天室的登录信息,建议客户设置。

意义

设置学员唯一标识,有以下这些优点:

  • 有效定位学员反馈遇到的问题
  • 大大减少与学员的沟通成本
  • 有效提高SDK这边单方面排查问题的效率
  • 可以归总某个学员唯一标识的错误日志

注意事项

由于开发者后台有个userid的值,开发者容易将其与viewerid混淆。在此特别说明:

  • 关于 userid 的传参,只在直播/回放观看页的入口中传入,如下代码,传入的就是后台的 userid。
PolyvCloudClassHomeActivity.startActivityForLiveWithParticipant(PolyvCloudClassLoginActivity.this,
                getTrim(channelId), userId, isAlone, isParticipant, rtcType);
  • 关于 viewerid 的传参,只在 PolyvCloudClassHomeActivity 的 initialStudentIdAndNickName 方法中进行赋值,开发者需要在此将 viewerid、viewerName 的值修改为自己用户系统的用户id,用户昵称。代码如下所示。
    private void initialStudentIdAndNickName() {
        //初始化观众id和观众昵称,用于统计数据
        if (isParticipant) {
            viewerId = PolyvVClassGlobalConfig.viewerId;
            viewerName = PolyvVClassGlobalConfig.username;
        } else {
            //todo 这里仅为了展示使用,开发者应当将viewerid、viewerName设置为应用使用用户的ID和昵称,以保证直播SDK的统计数据映射相对的用户系统
            //如:viewerId设置为手机号等唯一识别号ID,viewerName设置为用户昵称
            viewerId = "" + Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
            viewerName = "学员" + viewerId;
        }

        PolyvVClassGlobalConfig.userId = userId;
    }

二者赋值完毕后,程序代码会引用相关参数,开发者可以直接看参数的引用,避免混淆userid和viewerid的用法,导致报错。

方法

播放器提供playByMode(PolyvBaseVideoParams params, int mode)播放视频,其中params提供添加viewerIdviewerName的方法。

直播:

PolyvCloudClassVideoParams cloudClassVideoParams = new PolyvCloudClassVideoParams(channelId, userId, viewerId);
cloudClassVideoParams.buildOptions(PolyvBaseVideoParams.PARAMS2,viewerName);
videoView.playByMode(cloudClassVideoParams, PolyvPlayOption.PLAYMODE_LIVE);

回放:

PolyvPlaybackVideoParams playbackVideoParams = new PolyvPlaybackVideoParams(videoId, channelId, userId, viewerId);
playbackVideoParams.buildOptions(PolyvBaseVideoParams.PARAMS2, viewerName)
videoView.playByMode(playbackVideoParams, PolyvPlayOption.PLAYMODE_VOD);

上述方法的用例在PolyvCloudClassHomeActivity类的initialLiveVideoplayPlaybackVideo方法中可以找到。