首先在融云官网去注册或者登陆,然后点击我的控制台进入创建应用,如果已经有应用了,就把当前应用打开,选择
获取到App Key。

融云 SDK 2.0 集成与 1.+ 的版本有一些区别, 2.0 是以项目依赖的形式加入你的项目中。
使用 Android Studio 集成融云,完成简单的单人会话,大概需要 5步:

1、将 IMKitsdk 作为 Module 导入到 Project 中。

2、在 application 中调用 RongIM.init(this) 。

3、在 activity 中连接融云,RongIM.connect(token,callback)操作。

4、由于单聊是一个fragment,需要在 activity 加载的布局中,添加 fragment,并且在 AndroidManifest 中添加 intent-filter 。

5、在 activity 中调用 RongIM.getInstance().startPrivateChat(MainActivity.this, “aa″, “hello”); 开启单聊 。

第一步,去官网点击下载IMKitsdk下载对应的SDK,导入studio中。

做好项目依赖以后到 Module IMkit 中打开 AndroidManifest 修改 RONG_CLOUD_APP_KEY ,修改为你自己的 key,并将 AndroidManifest 中所有 host 改为你依赖项目的包名(此处指 Module app 的包名)。

此时第一步已完成。

2、在 application 中调用 RongIM.init(this);

这步比较简单,在 app 的 Module 下创建 一个 App 继承 Application,注意 App 需要 在 AndroidManifest 中配置

public class App extends Application {  @Override  public void onCreate() {  super.onCreate();  /** * 初始化融云 */  RongIM.init(this);  }
}

3、在 activity 中连接融云,RongIM.connect(token,callback)操作。

在 MainActivity 中做融云的连接操作。注意此处的 Token 为一个测试 Token,你需要换成你自己的 Token,这个 Token 还需要与 RONG_CLOUD_APP_KEY 匹配。

注意,在上线前请确认在 connect 方法 ConnectCallback 中通过 onTokenIncorrect 回调方法实现重新获取 Token 的逻辑。

package rong.io.demo;  import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;  import io.rong.imkit.RongIM;
import io.rong.imlib.RongIMClient;  public class MainActivity extends ActionBarActivity {  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  String Token = “d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==”;//test  /** * IMKit SDK调用第二步 * * 建立与服务器的连接 * */  RongIM.connect(Token, new RongIMClient.ConnectCallback() {  @Overridepublic void onTokenIncorrect() {//Connect Token 失效的状态处理,需要重新获取 Token}@Override  public void onSuccess(String userId) {  Log.e(“MainActivity”, “——onSuccess—-” + userId);  }  @Override  public void onError(RongIMClient.ErrorCode errorCode) {  Log.e(“MainActivity”, “——onError—-” + errorCode);  }  });  }  @Override  public boolean onCreateOptionsMenu(Menu menu) {  getMenuInflater().inflate(R.menu.menu_main, menu);  return true;  }  @Override  public boolean onOptionsItemSelected(MenuItem item) {  return super.onOptionsItemSelected(item);  }
}

4、由于单聊是一个 fragment,需要在 activity 加载的布局中,添加 fragment,并且在 AndroidManifest 中添加 intent-filter
4.1、 添加一个 Activity,此处命名为 ConversationActivity。

package rong.io.demo;  import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;  /** * Created by Bob on 2015/4/16. */
public class ConversationActivity extends ActionBarActivity {  private static final String TAG = ConversationActivity.class.getSimpleName();  @TargetApi(Build.VERSION_CODES.LOLLIPOP)  @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  //唯一有用的代码,加载一个 layout  setContentView(R.layout.conversation);  //继承的是ActionBarActivity,直接调用 自带的 Actionbar,下面是Actionbar 的配置,如果不用可忽略…  getSupportActionBar().setTitle(“聊天”);  getSupportActionBar().setLogo(R.drawable.de_bar_logo);  getSupportActionBar().setDisplayHomeAsUpEnabled(true);  getSupportActionBar().setHomeAsUpIndicator(R.drawable.de_actionbar_back);  }  @Override  public boolean onOptionsItemSelected(MenuItem item) {  finish();  return super.onOptionsItemSelected(item);  }
}

4.2、 查看布局 conversation.xml,如下:

<?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:layout_width=“match_parent”  android:layout_height=“match_parent”  android:name=“io.rong.imkit.fragment.ConversationFragment”/>  </LinearLayout>

4.3、在 AndroidManifest 注册。注意需修改 host 为自己的包名,其他不需要修改。

<activity android:name=“.ConversationActivity”>  <intent-filter>  <action android:name=“android.intent.action.VIEW” />  <category android:name=“android.intent.category.DEFAULT” />  <data  android:host=“rong.io.demo”  android:pathPrefix=“/conversation/”  android:scheme=“rong” />  </intent-filter>  </activity>

5、在 activity 中调用 RongIM.getInstance().startPrivateChat(MainActivity.this, “2462″, “hello”); 开启单聊,如下:

package rong.io.demo;  import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;  import io.rong.imkit.RongIM;
import io.rong.imlib.RongIMClient;  public class MainActivity extends ActionBarActivity {  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  String Token = “d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==”;//test  /** * IMKit SDK调用第二步 * * 建立与服务器的连接 * */  RongIM.connect(Token, new RongIMClient.ConnectCallback() {  @Override  public void onSuccess(String userId) {  Log.e(“MainActivity”, “——onSuccess—-” + userId);  }  @Override  public void onError(RongIMClient.ErrorCode errorCode) {  Log.e(“MainActivity”, “——onError—-” + errorCode);  }  });  }  @Override  public boolean onCreateOptionsMenu(Menu menu) {  getMenuInflater().inflate(R.menu.menu_main, menu);  return true;  }  @Override  public boolean onOptionsItemSelected(MenuItem item) {  /** * 启动单聊 * context - 应用上下文。 * targetUserId - 要与之聊天的用户 Id。 * title - 聊天的标题,如果传入空值,则默认显示与之聊天的用户名称。 */  if (RongIM.getInstance() != null) {  RongIM.getInstance().startPrivateChat(MainActivity.this, “2462″, “hello”);  }  return super.onOptionsItemSelected(item);  }
}

到此处 融云 SDK 单聊集成完了,其他的跟这差不多。

这里注意:
1). 创建应用的时候,选择

2). 测试的时候选择

开发环境,
上线的时候选择生产环境。
3). 测试的时候需要获取token,在后在这里:

![这里写图片描述](https://img-blog.csdn.net/20160428113409903)

在这里获取需要的token 和 用户id,如果上线以后token和用户id都是从服务端接口那里获取的。

获取到需要的token 和 用户id后,在代码中:

String Token = “d6bCQsXiupB/4OyGkh+TOrI6ZiT8q7s0UEaMPWY0lMxmHdi1v/AAJxOma4aYXyaivfPIJjNHdE+FMH9kV/Jrxg==”;//test
/**
* IMKit SDK调用第二步
*
* 建立与服务器的连接
*
*/
RongIM.connect(Token, new RongIMClient.ConnectCallback() {
@Override
public void onTokenIncorrect() {
//Connect Token 失效的状态处理,需要重新获取 Token
}
@Override
public void onSuccess(String userId) {
Log.e(“MainActivity”, “——onSuccess—-” + userId);
}

            @Override  public void onError(RongIMClient.ErrorCode errorCode) {  Log.e(“MainActivity”, “——onError—-” + errorCode);  }  }/** * 启动单聊 * context - 应用上下文。 * targetUserId - 要与之聊天的用户 Id。 * title - 聊天的标题,如果传入空值,则默认显示与之聊天的用户名称。 */  if (RongIM.getInstance() != null) {  RongIM.getInstance().startPrivateChat(MainActivity.this, “aa″, “hello”);  }

假如用户id为aa和bb的两个人需要建立聊天功能,就按照上面的办法分别获取到,aa和aa对应的token,把项目在手机中运行起来,然后在获取到bb和bb对应的token,把项目运行在另外一个手机上,这样两个手机就可以进行单聊了。源码下载

学习链接

安卓接入融云即时通讯的简单步骤相关推荐

  1. iOS开发融云即时通讯集成详细步骤

    1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注 ...

  2. iOS - 融云即时通讯的简单使用

    项目里开始需要聊天功能,以前没有接触过,最近看着官方集成文档不是很操心. 集成官方文档地址 集成步骤就不说了 文档说的很清楚啦~ 1⃣️ 集成完毕,我们开始要写代码来做初始化和连接部分啦! 在appd ...

  3. 融云即时通讯SDK集成 – 定制UI(二) ——添加自定义表情库

    融云即时通讯SDK集成 – 定制UI(二) --添加自定义表情库 背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的 ...

  4. 融云即时通讯云平台获北京六局委新技术新产品认证

    近日,融云即时通讯云平台成功入选第七批北京市新技术新产品(服务)认证,成为本批次中即时通讯行业唯一入选企业.该证书是由北京市科学技术委员会.北京市发展改革委员会.北京市经济和信息化委员会.北京市住房和 ...

  5. android 融云教程,安卓接入融云IM连接不上??,

    安卓接入融云IM连接不上??, 融云初始化失败?融云连接失败??连接回调方法不执行???不可能的,就那么几行代码,怎么会有错. 1.项目gradle里添加融云maven仓库 maven {url &q ...

  6. iOS:融云即时通讯快速集成

    一.介绍 即时通讯在众多社交软件.生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK.融云SDK...,这两家做的都很不错,各有千秋吧,要是真 ...

  7. 融云即时通讯云5大高级功能解决App运营诸多痛点

    在移动互联网时代,涉及各类民生的App应用已经彻底改变了人们的生活方式.据工信部日前发布的<2017年上半年我国互联网业务运行情况报告>显示,我国移动应用程序,即App的数量已超402万款 ...

  8. 对接融云即时通讯组件SDK,轻松实现App聊天室

    我好像特别喜欢做聊天室类的东东,刚折腾完微软的SignalR又折腾App.本来想研究研究XMPP的,由于服务器的搭建问题,先采用一个第三方的吧,看看效果如何.听到弟弟说他们公司用到了融云,我也下载个S ...

  9. 融云聊天 php_thinkphp整合系列之融云即时通讯在线聊天

    随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的 ...

  10. 融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库

    背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选 ...

最新文章

  1. Thymeleaf 标准表达式语法详解
  2. Struts2自定义Result处理JSON
  3. TuShare获取K线数据
  4. java制定年月日第几天_(JAVA)输入年月日,计算日期是今年的第几天?
  5. 网管交换机怎么设置?网管交换机设置方法
  6. 偷用计算机作文,偷玩电脑作文5篇
  7. PPT(十)-动画基础知识学习
  8. Webhook入门教程:Webhook vs API 它们之间有什么区别?
  9. java jexl 工具类_jexl表达式解析、计算工具类.md
  10. Java知多少(87)选择框和单选按钮
  11. iOS 集成友盟分享图片链接为http时无法加载问题解决
  12. solidworks分析视频教程-结构应力仿真有限元虚拟样机及流场分析
  13. html中qq咨询的代码,QQ样式的在线客服代码
  14. 在Status状态栏中的出现Out of date shapes问题解决方式
  15. 前端最常用的移动App开发方式及技术栈详解
  16. 绘制网络组建拓扑图方法分享
  17. 王城英雄无限钻石服务器,王城英雄无限钻石版
  18. 重装也无法修复此计算机,win10系统重装|Win10“重置此电脑”时出现问题解决教程...
  19. Stopping service [Tomcat]和Disconnected from the target VM排查
  20. ZigBee网络数据传递流程_蓝牙、WIFI、Zigbee谁更适合物联网,各有哪些优缺点?...

热门文章

  1. html多级下拉菜单代码,jQuery实现的多级下拉菜单效果代码
  2. 苹果apple pay原理_Apple Pay的工作原理
  3. 鸿蒙系统nas,5款NAS 系统横向测评,看看哪款最适合你!
  4. 计算机拒绝访问移动硬盘,移动硬盘拒绝访问怎么办
  5. 《淘宝技术这十年》读书笔记
  6. Windows清理助手系统诊断使用教程
  7. et200sp系统服务器模块,西门子ET200
  8. ROS常用命令及脚本
  9. 从算法原理到应用部署!微信「扫一扫识物」 的背后技术揭秘
  10. MDIO总线介绍 |CSDN创作打卡