融云即时通讯之直播聊天室
前言
做直播当然少不了聊天功能,融云直播聊天室支持消息类型包括文字、语音、图片、点赞、礼物、弹幕等,也支持通过自定义消息实现自已的业务逻辑;支持聊天室用户管理功能,包括创建、加入、销毁、禁言、查询、封禁(踢人)等;
1.官方文档地址:https://www.rongcloud.cn/docs/android_imlib.html#prepare
2.官方聊天室源码地址:https://github.com/rongcloud/demo-chatroom/tree/master/client-android
3.SDK下载地址:https://www.rongcloud.cn/downloads
开发指南
前期准备
获取Token
集成 SDK
环境要求
在您集成融云 SDK 前环境要求如下:
- Android SDK Build-tools 请升级到 21 及以上版本。
- JAVA 编译版本 JDK 1.7 及以上版本。
Android SDK 最低支持 Android API 15: Android 4.0.3。
导入 SDK
以 Module 形式导入前面下载的融云 SDK 里面的各个组件。
打开您的工程, File -> New -> Import Module
添加配置
dependencies { compile project(':IMLib')}
打开 IMLib Module 的 AndroidManifest.xml 文件,把 meta-data RONG_CLOUD_APP_KEY 的值修改为您自己的 AppKey
初始化
在 Application 的 onCreate() 中,调用融云初始化方法。
RongIMClient.init(getApplicationContext(),"appkey");
连接服务器
RongIMClient.connect("Token", new RongIMClient.ConnectCallback() {
@Override
public void onTokenIncorrect() {
Log.d(TAG, "onTokenIncorrect: ===>");
}
@Override
public void onSuccess(String s) {
Log.d(TAG, "onSuccess: ===>"+s.toString());
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
Log.d(TAG, "onError: ===>"+errorCode.toString());
}
});
创建聊天室
RongIMClient.getInstance().joinChatRoom("聊天室id", -1, new RongIMClient.OperationCallback() {
@Override
public void onSuccess() {
Log.d(TAG, "onSuccess: ===>"+"创建聊天室成功");
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
Log.d(TAG, "onError: ===>"+"创建聊天室失败");
}
});
发送消息
public void sendMessage(final MessageContent msgContent) {
Message msg = Message.obtain("聊天室id", Conversation.ConversationType.CHATROOM, msgContent);
RongIMClient.getInstance().sendMessage(msg, null, null, new IRongCallback.ISendMessageCallback() {
@Override
public void onAttached(Message message) {
}
@Override
public void onSuccess(Message message) {
tv_show.setText("发送成功");
}
@Override
public void onError(Message message, RongIMClient.ErrorCode errorCode) {
tv_show.setText("发送失败");
}
});
}
接收消息
RongIMClient.setOnReceiveMessageListener(new RongIMClient.OnReceiveMessageListener() {
@Override
public boolean onReceived(Message message, int i) {
Log.d(TAG, "onReceived: ===>"+"接收消息");
return false;
}
});
遇到的问题
在7.0以上的手机上,调用connect方法不回调:
两种解决方案:
(1)把targetSdkVersion改小于24。
(2)apk中带上需要的so文件