Android 评论库

概述

消息sdk是用来订阅消息的开发工具包,为开发者提供简单易用的接口,可以很方便地接收消息信息。

开发准备

环境要求

  • android 4.0.3 (SDK API 15)及以上
  • Android Studio 3.5+

集成 SDK

  1. tv.mudu.commentlib.aar 放入 app/libs

  2. app/build.gradle 加入

implementation fileTree(include: ['*.aar'], dir: 'libs')

配置 App 权限

app/AndroidManifest.xml 中声明以下权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

快速开发

1.设置 key,若没有account key,请联系客服咨询

MDConfig.setAccountKey("");

2.设置全局频道HashId(可通过频道详情接口actid字段获取)

MDConfig.setActivityId(String activityHashId);

3.创建评论管理对象

Commenter commenter = new Commenter(Context context);

4.登陆

//设置登录的评论者昵称和头像,此接口会创建一个匿名角色
commenter.login("评论者昵称", "http://mudu.tv/assets/img/icon.png", new Commenter.LoginCallback() {
    @Override
    public void onLoginSuccess(String s) {
        //s:OK
        //登录成功
    }

    @Override
    public void onLoginFailed(Exception e) {
        //登录失败
    }
});

5.订阅消息

// 进行频道订阅,在发送评论之前必须先注册成功该订阅消息,否则消息将无法收取。
commenter.subscribe(new Commenter.MessageCallback() {
    @Override
    public void onCommentMessage(MessageEntity entity, String msgData) {
        //评论消息
    }

    @Override
    public void onOtherMessage(String msg, String subject) {
        //其他消息
    }

    @Override
    public void onError(int errorCode, String message) {
        //错误
    }
});

6.发送评论消息

// 发送频道消息
commenter.publish("消息内容", new Commenter.Callback(){

    @Override
    public void onSuccess(String result) {
        //发送成功 result: {"id":xxxxx}
    }

    @Override
    public void onError(Exception e) {
        //发送失败
    }

});

7.获取历史评论

int page = 0;
commenter.getCommentList(page, new MDCallback() {

    @Override
    public void onSuccess(Object o) {
        CommentListEntity result = (CommentListEntity) o;
        List<CommentEntity> comments = result.getComments();
        for (CommentEntity entity: comments) {
            showMsg(entity.getUsername() + ": " + entity.getMessage());
        }  
    }

    @Override
    public void onError(Exception e) {
        Log.e(TAG, e.getMessage());
    }
});

8.获取拉流地址

MDActivityManager.getInstance().getLiveAddress(new LiveAddressCallback() {

    @Override
    public void onListLiveAddress(String liveAddress) {
        //列表直播地址
    }

    @Override
    public void onLiveAddress(List<LiveEntity> liveEntityList) {
        //直播地址
    }

    @Override
    public void onError(Exception e) {
        Log.d(TAG, "liveAddress failed: " + e.getMessage());
    }

});

9.取消订阅

commenter.unsubscribe();

10.断开连接

commenter.close();

11.销毁

MDConfig.destroy();
commenter.destroy();

接口说明

MDConfig

成员方法 功能
setAccountKey 设置AccountKey
getAccountKey 获取AccountKey
setActivityId 设置频道HashId
getActivityId 获取当前设置的频道HashId
destroy 销毁

Commenter

成员方法 功能
login 登录(头像可选设置,不设置为默认头像)
loginByPlatformUser 第三方用户登录
loginByToken 根据 token 登录
oauth2Login oauth2登录,需要通过与服务端交互获取ticket进行授权登录
publish 发布评论消息
getCommentList 获取历史评论列表
subscribe 订阅
unsubscribe 取消订阅(取消订阅不影响发布评论消息)
close 销毁评论会话
isConnected 判断评论管理对象是否连接到频道
reconnect 重连(请在断网时制定策略进行重连操作,不然会收不到评论)
getUserInfo 获取用户相关信息
destroy 销毁

MDActivityManager

成员方法 功能
getInstance 获取单例
activityInfo 获取当前频道信息
getLiveAddress 获取当前直播流地址

消息对象说明

MessageEntity

评论消息管理对象

对象属性 类型 说明
msgType String 消息类型
serviceType 服务类型 String
action String 评论功能类型 comment,danmu:评论与弹幕;highlight:弹幕高亮
content MDMessage 评论消息对象

ContentDTO

评论对象

对象属性 类型 功能
isAdmin boolean 是否管理员消息
is_pushed boolean 是否置顶
msg_type int 消息类型
priority int 消息优先级
id int 消息id
userHashId String 用户hash id
userId int 用户id
dateline String 消息时间
username String 评论者昵称
message String 评论内容
avatar String 评论者头像

LiveEntity

直播流地址对象

对象属性 类型 说明
lineName String 线路名称
resolutions List 不同分辨率封装列表

ResolutionEntity

不同分辨率地址

对象属性 类型 说明
resolution String 分辨率(清晰程度)名称
pullAddress String 直播拉流地址

错误码说明

MessageCallback.onError

错误码 说明
3001 im发送错误
3002 im内部错误
3003 im重连错误
3004 im关闭错误

添加混淆文件

proguard-rules.pro 文件下添加如下代码:

-keep class org.mdwebsocket.**{*;}
-dontwarn org.mdwebsocket.**

-keep class tv.mudu.commentlib.**{*;}
-dontwarn tv.mudu.commentlib.**

results matching ""

    No results matching ""