Android 评论库
概述
消息sdk是用来订阅消息的开发工具包,为开发者提供简单易用的接口,可以很方便地接收消息信息。
开发准备
环境要求
- android 4.0.3 (SDK API 15)及以上
- Android Studio 3.5+
集成 SDK
将
tv.mudu.commentlib.aar
放入app/libs
在
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.**