Android快速集成融云
2018-04-03 17:07
239 查看
自己闲暇没事就想搞搞即时通讯,选了融云去集成一下,操作不是很难,一起来看一下。
首先了解一下融云的组成库都有那些:
1、IMKit 集成了会话界面,并且提供了丰富的自定义功能,我们推荐首次接触融云的客户直接使用 IMKit 来快速集成和开发。
2、IMLib 提供了基础的通信能力,较轻量,适用于对 UI 有较高订制需求的开发者,但您需要自己去实现大量的界面和功能。
3、CallKit 融云音视频通话的界面组件,包含了单人、多人音视频通话的界面的各种场景和功能。您可以通过集成该组件来实现丰富的音视频通话界面,并进行自己的 UI 定制开发。同时我们开源了 CallKit,您可以根据您的需要去使用。
4、CallLib 融云音视频通话核心能力组件。
5、LocationLib 位置相关库文件
6、PushLib 融云支持第三方推送(小米),您可以从这里下载对应的第三方推送 jar 包。
7、RedPacket 融云红包相关组件,通过集成该组件,即可快速实现红包功能。
自己测试demo只集成了IMLib 和IMKit 两个库,完成基本的单聊与群聊。需要其他功能的请按官方文档集成。
第一步 注册开发者账号,创建应用。(拿到App Key)
1.png
第二步 下载 SDK
下载地址 http://www.rongcloud.cn/downloads
第三步 将model导入工程
IMLib 是基础包必须导入,同样的方式导入IMKit 包(两个包缺一不可,别忘记让app依赖这两个model)
将 PushLib 中的 jar 包 和 pushDaemon -> libs 目录下应用所支持平台的 so 拷贝到您应用的 libs 目录下,另外还需要将 pushDaemon -> executable 目录下各平台的可执行文件 push_daemon 拷贝到您应用 Module 的 assets 目录下。如图:
2.png
注意 : 放置 so 的文件夹位置需要和您 build.gradle 文件中配置的 jni 目录一致。
3.png
打开 IMLib Module 的 AndroidManifest.xml 文件,把 meta-data RONG_CLOUD_APP_KEY 的值修改为您自己的 AppKey. 如图:
4.png
在应用的 App Module 的 AndroidManifest.xml 文件中,添加 FileProvider 相关配置,修改 android:authorities 为 “您的应用的包名称.FileProvider”。
5.png
到此集成完毕,IMKit 集成方式跟IMLib一样(必须集成)
第四步 初始化
在 application 中调用 RongIM.init(this);
public class App extends Application {
}
运行程序可能会出现错误 ”初始化 RongIM.init(this) 时报错 Failed resolution of: Lio/rong/push/PushService”
解决办法: (http://support.rongcloud.cn/kb/NjY5)]http://support.rongcloud.cn/kb/NjY5](http://support.rongcloud.cn/kb/NjY5)
获取Token
可以在融云官网获取 Touken 如图:
6.png
7.png
在 activity 中连接融云,RongIM.connect(token,callback)操作。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// token 就是你刚刚获取的token
RongIM.connect(token, new RongIMClient.ConnectCallback() {
//token1参数报错
@Override
public void onTokenIncorrect() {
Log.e(“TAG”,”参数错误”);
Toast.makeText(MainActivity.this, “token1参数报错”, Toast.LENGTH_SHORT).show();
}
第五步 集成单聊
1、配置会话列表
配置布局文件
这是您的会话列表 Activity 对应的布局文件:conversationlist.xml。注意 android:name 固定为融云的 ConversationListFragment。
?xml version=”1.0” encoding=”utf-8”?
LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical” android:layout_width=”match_parent”
android:layout_height=”match_parent”>
/LinearLayout>
新建Activity
public class ConversationListActivity extends FragmentActivity {
}
配置 intent-filter:
融云 SDK 是通过隐式调用的方式来实现界面跳转的。因此您需要在 AndroidManifest.xml 中,您的会话列表 Activity 下面配置 intent-filter,其中,android:host 是您应用的包名,需要手动修改,其他请保持不变。
!–会话列表–
activity
android:name=”io.rong.fast.activity.ConversationListActivity”
android:screenOrientation=”portrait”
android:windowSoftInputMode=”stateHidden|adjustResize”>
/activity>
2、配置会话界面
会话 Fragment 跟会话列表是完全一致的,您可以用同样的方式快速的配置好。
配置布局文件
这是您的会话列表 Activity 对应的布局文件:conversationlist.xml。注意 android:name 固定为融云的 ConversationListFragment。
?xml version=”1.0” encoding=”utf-8”?>
LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”>
/LinearLayout>
新建Activity
public class ConversationActivity extends FragmentActivity {
}
配置 intent-filter:
在 AndroidManifest.xml 中,会话 Activity 下面配置 intent-filter。 注意请修改 android:host 为您应用的包名,其他保持不变。
!–会话界面–>
activity
android:name=”io.rong.fast.activity.ConversationActivity”
android:screenOrientation=”portrait”
android:windowSoftInputMode=”stateHidden|adjustResize”>
b7cc
/pre>
/activity>
配置两个界面后就可以进行聊天了。
填写代码
//启动会话界面
findViewById(R.id.btn_chat_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connectRongServer(token1);
//启动会话界面
if (RongIM.getInstance() != null)
RongIM.getInstance().startPrivateChat(MainActivity.this, “18673668975”, “贝吉塔”);
}
});
//启动会话列表
findViewById(R.id.btn_chatlist_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connectRongServer(token1);
//启动会话列表
startActivity(new Intent(MainActivity.this, HomeActivity.class));
}
});
//创建群聊
findViewById(R.id.btn_createGroup_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connectRongServer(token1);
//创建群聊
final List String> testList = new ArrayList String>();
testList.add(“18673668975”);
testList.add(“18673668976”);
testList.add(“18673668977”);
RongIM.getInstance().createDiscussion(“123”, testList, new RongIMClient.CreateDiscussionCallback() {
@Override
public void onSuccess(String s) {
// s 表示的是群组ID
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
ed = (EditText) findViewById(R.id.ed_id_main);
ed.setText(s);
roomId=s;
首先了解一下融云的组成库都有那些:
1、IMKit 集成了会话界面,并且提供了丰富的自定义功能,我们推荐首次接触融云的客户直接使用 IMKit 来快速集成和开发。
2、IMLib 提供了基础的通信能力,较轻量,适用于对 UI 有较高订制需求的开发者,但您需要自己去实现大量的界面和功能。
3、CallKit 融云音视频通话的界面组件,包含了单人、多人音视频通话的界面的各种场景和功能。您可以通过集成该组件来实现丰富的音视频通话界面,并进行自己的 UI 定制开发。同时我们开源了 CallKit,您可以根据您的需要去使用。
4、CallLib 融云音视频通话核心能力组件。
5、LocationLib 位置相关库文件
6、PushLib 融云支持第三方推送(小米),您可以从这里下载对应的第三方推送 jar 包。
7、RedPacket 融云红包相关组件,通过集成该组件,即可快速实现红包功能。
自己测试demo只集成了IMLib 和IMKit 两个库,完成基本的单聊与群聊。需要其他功能的请按官方文档集成。
第一步 注册开发者账号,创建应用。(拿到App Key)
1.png
第二步 下载 SDK
下载地址 http://www.rongcloud.cn/downloads
第三步 将model导入工程
IMLib 是基础包必须导入,同样的方式导入IMKit 包(两个包缺一不可,别忘记让app依赖这两个model)
将 PushLib 中的 jar 包 和 pushDaemon -> libs 目录下应用所支持平台的 so 拷贝到您应用的 libs 目录下,另外还需要将 pushDaemon -> executable 目录下各平台的可执行文件 push_daemon 拷贝到您应用 Module 的 assets 目录下。如图:
2.png
注意 : 放置 so 的文件夹位置需要和您 build.gradle 文件中配置的 jni 目录一致。
3.png
打开 IMLib Module 的 AndroidManifest.xml 文件,把 meta-data RONG_CLOUD_APP_KEY 的值修改为您自己的 AppKey. 如图:
4.png
在应用的 App Module 的 AndroidManifest.xml 文件中,添加 FileProvider 相关配置,修改 android:authorities 为 “您的应用的包名称.FileProvider”。
5.png
到此集成完毕,IMKit 集成方式跟IMLib一样(必须集成)
第四步 初始化
在 application 中调用 RongIM.init(this);
public class App extends Application {
@Override public void onCreate() { super.onCreate(); //初始化融云 RongIM.init(this); }
}
运行程序可能会出现错误 ”初始化 RongIM.init(this) 时报错 Failed resolution of: Lio/rong/push/PushService”
解决办法: (http://support.rongcloud.cn/kb/NjY5)]http://support.rongcloud.cn/kb/NjY5](http://support.rongcloud.cn/kb/NjY5)
获取Token
可以在融云官网获取 Touken 如图:
6.png
7.png
在 activity 中连接融云,RongIM.connect(token,callback)操作。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// token 就是你刚刚获取的token
RongIM.connect(token, new RongIMClient.ConnectCallback() {
//token1参数报错
@Override
public void onTokenIncorrect() {
Log.e(“TAG”,”参数错误”);
Toast.makeText(MainActivity.this, “token1参数报错”, Toast.LENGTH_SHORT).show();
}
@Override public void onSuccess(String s) { Log.e("TAG","成功"); // 连接成功,说明你已成功连接到融云Server Toast.makeText(MainActivity.this, "连接成功 ", Toast.LENGTH_SHORT).show(); } @Override public void onError(RongIMClient.ErrorCode errorCode) { Log.e("TAG","失败"); Toast.makeText(MainActivity.this, errorCode.getValue()+"", Toast.LENGTH_SHORT).show(); } });
第五步 集成单聊
1、配置会话列表
配置布局文件
这是您的会话列表 Activity 对应的布局文件:conversationlist.xml。注意 android:name 固定为融云的 ConversationListFragment。
?xml version=”1.0” encoding=”utf-8”?
LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical” android:layout_width=”match_parent”
android:layout_height=”match_parent”>
fragment android:id="@+id/conversationlist" android:name="io.rong.imkit.fragment.ConversationListFragment" android:layout_width="match_parent" android:layout_height="match_parent" />
/LinearLayout>
新建Activity
public class ConversationListActivity extends FragmentActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.conversationlist); }
}
配置 intent-filter:
融云 SDK 是通过隐式调用的方式来实现界面跳转的。因此您需要在 AndroidManifest.xml 中,您的会话列表 Activity 下面配置 intent-filter,其中,android:host 是您应用的包名,需要手动修改,其他请保持不变。
!–会话列表–
activity
android:name=”io.rong.fast.activity.ConversationListActivity”
android:screenOrientation=”portrait”
android:windowSoftInputMode=”stateHidden|adjustResize”>
intent-filter> action android:name="android.intent.action.VIEW" /> category android:name="android.intent.category.DEFAULT" /> data android:host="io.rong.fast" android:pathPrefix="/conversationlist" android:scheme="rong" /> /intent-filter>
/activity>
2、配置会话界面
会话 Fragment 跟会话列表是完全一致的,您可以用同样的方式快速的配置好。
配置布局文件
这是您的会话列表 Activity 对应的布局文件:conversationlist.xml。注意 android:name 固定为融云的 ConversationListFragment。
?xml version=”1.0” encoding=”utf-8”?>
LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”>
fragment android:id="@+id/conversation" android:name="io.rong.imkit.fragment.ConversationFragment" android:layout_width="match_parent" android:layout_height="match_parent" />
/LinearLayout>
新建Activity
public class ConversationActivity extends FragmentActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.conversation); }
}
配置 intent-filter:
在 AndroidManifest.xml 中,会话 Activity 下面配置 intent-filter。 注意请修改 android:host 为您应用的包名,其他保持不变。
!–会话界面–>
activity
android:name=”io.rong.fast.activity.ConversationActivity”
android:screenOrientation=”portrait”
android:windowSoftInputMode=”stateHidden|adjustResize”>
intent-filter> action android:name="android.intent.action.VIEW" /> category android:name="android.intent.category.DEFAULT" /> data android:host="io.rong.fast" android:pathPrefix="/conversation/" android:scheme="rong" /> /intent-filter><
b7cc
/pre>
/activity>
配置两个界面后就可以进行聊天了。
填写代码
//启动会话界面
findViewById(R.id.btn_chat_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connectRongServer(token1);
//启动会话界面
if (RongIM.getInstance() != null)
RongIM.getInstance().startPrivateChat(MainActivity.this, “18673668975”, “贝吉塔”);
}
});
//启动会话列表
findViewById(R.id.btn_chatlist_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connectRongServer(token1);
//启动会话列表
startActivity(new Intent(MainActivity.this, HomeActivity.class));
}
});
//创建群聊
findViewById(R.id.btn_createGroup_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connectRongServer(token1);
//创建群聊
final List String> testList = new ArrayList String>();
testList.add(“18673668975”);
testList.add(“18673668976”);
testList.add(“18673668977”);
RongIM.getInstance().createDiscussion(“123”, testList, new RongIMClient.CreateDiscussionCallback() {
@Override
public void onSuccess(String s) {
// s 表示的是群组ID
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
ed = (EditText) findViewById(R.id.ed_id_main);
ed.setText(s);
roomId=s;
} @Override public void onError(RongIMClient.ErrorCode errorCode) { // Toast.makeText(MainActivity.this,errorCode.getValue()+"",Toast.LENGTH_SHORT).show(); } }); } });
//进入群聊
findViewById(R.id.btn_joingroup_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {RongIM.getInstance().startDiscussionChat(MainActivity.this,群组ID,"123"); } });
//添加讨论组成员
findViewById(R.id.btn_addgroup_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connectRongServer(token1);
final ArrayList String> userIds = new ArrayList String>();
userIds.add(“10”);//增加 userId。
RongIM.getInstance().addMemberToDiscussion(roomId, userIds, new RongIMClient.OperationCallback() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, “添加成功”, Toast.LENGTH_SHORT).show();
}@Override public void onError(RongIMClient.ErrorCode errorCode) { Toast.makeText(MainActivity.this,errorCode.getValue()+"",Toast.LENGTH_SHORT).show(); } }); } });
//移除讨论组成员
findViewById(R.id.btn_delgroup_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {RongIM.getInstance().getRongIMClient().removeMemberFromDiscussion("bac45e36-3ef3-45b5-9047-dd25054c27ae", "10", new RongIMClient.OperationCallback() { @Override public void onSuccess() { Toast.makeText(MainActivity.this, "移除成功", Toast.LENGTH_SHORT).show(); } @Override public void onError(RongIMClient.ErrorCode errorCode) { Toast.makeText(MainActivity.this, errorCode.getValue()+"", Toast.LENGTH_SHORT).show(); } }); } }); //发送消息 findViewById(R.id.btn_sendmessage_main).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 构造 TextMessage 实例 TextMessage myTextMessage = TextMessage.obtain("发送消息"); /* 生成 Message 对象。 * "7127" 为目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id。 * Conversation.ConversationType.PRIVATE 为私聊会话类型,根据需要,也可以传入其它会话类型,如群组,讨论组等。 */ Message myMessage = Message.obtain("18673668975", Conversation.ConversationType.PRIVATE, myTextMessage); RongIM.getInstance().sendMessage(myMessage, null, null, new IRongCallback.ISendMessageCallback() { @Override public void onAttached(Message message) { //消息本地数据库存储成功的回调 Toast.makeText(MainActivity.this, "本地数据库存储成功", Toast.LENGTH_SHORT).show(); } @Override public void onSuccess(Message message) { //消息通过网络发送成功的回调 Toast.makeText(MainActivity.this, "网络发送成功", Toast.LENGTH_SHORT).show(); } @Override public void onError(Message message, RongIMClient.ErrorCode errorCode) { //消息发送失败的回调 Toast.makeText(MainActivity.this, "发送失败", Toast.LENGTH_SHORT).show(); } }); } }); }
以上几个方法,自己琢磨一下就能用了,如何集成到项目中你还需要好好考虑一下
六 添加好友
融云没有添加好友这个概念
具体流程思想 看看这个链接你就会懂 http://support.rongcloud.cn/kb/MzQ5
我自己就搞了这么多,需要什么自己下个嗨豹研究一下它的代码,我看了一下不算难。
相关文章推荐
- AndroidUiAutomator使用Jenkins搭建持续集成测试系统Ⅰ—Android UiAutomator以及快速编译方法
- Android 微信支付快速集成案例及有效解决返回值-1
- 【快速搞定】2分钟搞定极光推送(极光推送Android端集成)
- Android项目快速编译之Freeline-Android的配置与集成
- Android项目快速编译之Freeline-Android的配置集成
- android jpush(极光推送)快速集成
- android app --- 快速集成SharaSDK ,SMS实现短信验证
- 快速集成融云SDK– Android Studio
- Android快速集成Bugly
- Android平台快速集成当下流行平台分享
- 如何获取Gaid,Android Advertising ID 简介以及快速集成和使用
- ShareSDK入门指南:Android 10分钟快速集成
- AndroidImageSlider三分钟快速集成酷炫自动轮播广告
- Android快速开发框架Android_BaseLib,集成了常用工具类,自定义View控件,Base基类封装,常用开源框架
- Android 快速开发框架--2016集成优化。
- Android快速集成框架:MVP+Dagger+主流框架
- vlc_for_android(基于git-3.0.0)快速集成