环信Android客户端集成文档

环信Android SDK提供一套完整的IM开发框架,包括SDK-Core、SDK、EaseUI等模块,支持消息收发、会话管理、群组、好友等功能。集成步骤包括注册环信账号、创建应用、下载SDK,配置工程,初始化SDK,以及处理异步/同步方法。SDK还支持自动登录、消息监听、好友管理和群组管理等功能。
摘要由CSDN通过智能技术生成

一、Android SDK简介

  1. 环信SDK为用户开发IM相关的应用提供的一套完善的开发框架。 包括以下几个部分:

    • SDK_Core为核心的消息同步协议实现,完成与服务器之间的信息交换。
    • SDK是基于核心协议实现的完整的IM功能,实现了不同类型消息的收发、会话管理、群组、好友、聊天室等功能。
    • EaseUI是一组IM相关的UI控件,旨在帮助开发者快速集成环信SDK。
  2. SDK采用模块化设计,每一模块的功能相对独立和完善,用户可以根据自己的需求选择使用下面的模块:

    • EMClient: SDK的入口,主要完成登录、退出、连接管理等功能。也是获取其他模块的入口。
    • EMChatManager: 管理消息的收发,完成会话管理等功能。
    • EMContactManager: 负责好友的添加删除,黑名单的管理。
    • EMGroupManager: 负责群组的管理,创建、删除群组,管理群组成员等功能。
    • EMChatroomManager: 负责聊天室的管理。

二、Android SDK集成

  1. 集成前准备:注册并创建应用

    • 注册环信开发者账号:
      • 在环信官网上点击“即时通讯云”,并点击“免费使用”,跳转到环信管理后台注册页面。
      • 在注册页面中填写详细资料,企业ID:只限于数字、字母、横线,且不能以横线开头和结尾。企业ID会存在于生成的AppKey中。如:测试Demo中AppKey为easemob-demo#chatdemo,则easemob-demo为填写的企业ID。
        注:如果是个人应用开发的话,企业ID直接写成自己定义的ID就可以。
      • 点击注册。注册成功后,我们会向您填写的邮箱中发送验证信息,请前往邮箱进行账号激活。
    • 创建应用:
      • 账号激活成功后,回到控制台登录页面登录到开发者后台,在我的应用中,点击创建应用按钮。
      • 填写创建应用的名称(内容只限于数字、大小写字母),(应用名称会存在于你生成的AppKey中,如:测试Demo中AppKey为easemob-demo#chatdemo,则chatdemo为填写的应用名称。注册授权根据需要自行选择。)
      • 填写好应用名称后,点确定。创建成功,系统会为你生成AppKey以及相关配置信息。
        之后我们需要将AppKey配置到工程里。
  2. 下载SDK :到环信官网下载环信SDK。

  3. SDK目录讲解:从官网下载的SDK目录包含了4个文件夹,如下:

    • doc文件夹:SDK相关API文档
    • examples文件夹:ChatDemoUI(老的Demo,不推荐使用)、ChatDemoUI3.0(3.0Demo依赖EaseUI库)、EaseUI
    • libs文件夹:包含IM和实时音视频功能所需要的jar和so文件
    • libs.without.audio文件夹:无实时语音、实时视频功能的SDK包,如果项目中只用到聊天功能,可以把项目里的jar和so文件替换成此文件夹里的
  4. 第三方类库介绍:

    • SDK中用到的第三方库:
      • android-support-v4.jar:这个可以说是每个APP中都是不可缺少的jar包,这里不多赘述
      • google-play-services.jar:GCM(Google云消息传递)的jar包,不需要GCM推送可以删除
      • MiPush_SDK_Client_2_2_19.jar:小米推送的jar包,不需要可以删除
      • org.apache.http.legacy.jar:Android6.0中默认移除了httpclient的代码,用这个库兼容,建议不要删除,否则在6.0系统中,SDK会有问题
    • EaseUI中用到的第三方库:
      • glide-3.6.1.jar:图片处理库,显示用户头像时用到
      • BaiduLBS_Android.jar:百度地图的jar包,相关so还有libBaiduMapSDK_base_v3_6_1.so、libBaiduMapSDK_map_v3_6_1.so、libBaiduMapSDK_util_v3_6_1.so及liblocSDK6a.so。如果不用百度可以把这些删除掉,删除掉后项目会报错,修改相应的报错(报错的代码很少,很容易就修改完成)
    • Demo中用到的第三方库:
      • android-support-multidex.jar:APP总方法数超过64k时,需要用这个库做分包处理,可以删除
      • 其他的不再进行介绍
  5. 配置工程:
    • 导入SDK:在自行开发的应用中,集成环信聊天需要把libs文件夹下的jar及so文件复制到你的项目的libs文件夹相应位置,如果不需要语音和视频通话功能,导入libs.without.audio下的文件即可。
    • 配置信息:在清单文件AndroidManifest.xml里加入以下权限,以及写上你注册的AppKey。
  6. APP打包混淆: 在ProGuard文件中加入以下keep。
    -keep class com.hyphenate.* { ;}
    -dontwarn com.hyphenate.**

    注:清单文件的配置示例
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <!-- 设置环信应用的AppKey -->
    <meta-data android:name="EASEMOB_APPKEY" android:value="Your AppKey" />
    <!-- 声明SDK所需的service SDK核心功能-->
    <service android:name="com.hyphenate.chat.EMChatService" android:exported="true"/>
    <!-- 声明SDK所需的receiver -->
    <receiver android:name="com.hyphenate.chat.EMMonitorReceiver">
    <intent-filter>
    <action android:name="android.intent.action.PACKAGE_REMOVED"/>
    <data android:scheme="package"/>
    </intent-filter>
    <!-- 可选filter -->
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
    <action android:name="android.intent.action.USER_PRESENT" />
    </intent-filter>
    </receiver>

    三、SDK 中相关异步/同步处理方法介绍
    • 同步方法:SDK里大部分方法都为同步方法,即这个方法执行完毕,才会走后面的代码。
    • 异步方法:带有callback以及API注释里明确写明异步方法的方法,即不需要等这个方法走完,后边的代码就已经在执行了,通过callback得到方法执行的结果。
      注:具体是异步还是同步,也可以参考相关文档介绍的方法,每一个方法后边都有注释信息提示开发者,未注释的则认为同步执行。

四、初始化SDK

要求在application的oncreate方法中做初始化,初始化的时候需要传入设置好的options。

        EMOptions options = new EMOptions();  
        // 默认添加好友时,是不需要验证的,改成需要验证
        options.setAcceptInvitationAlways(false);
        ...
        //初始化
        EMClient.getInstance().init(applicationContext, options);
        //在做打包混淆时,关闭debug模式,避免消耗不必要的资源
        EMClient.getInstance().setDebugMode(true);

注:如果你的APP中有第三方的服务启动,请在初始化SDK(EMClient.getInstance().init(applicationContext, options))方法的前面添加以下相关代码(相应代码也可参考Demo的application),使用EaseUI库的就不用理会这个。

        appContext = this;
        int pid = android.os.Process.myPid();
        String processAppName = getAppName(pid);
        // 如果APP启用了远程的service,此application:onCreate会被调用2次
        // 为了防止环信SDK被初始化2次,加此判断会保证SDK被初始化1次
        // 默认的APP会在以包名为默认的process name下运行,如果查到的process name不是APP的process name就立即返回

        if (processAppName == null ||!processAppName.equalsIgnoreCase(appContext.getPackageName())) {
            Log.e(TAG, "enter the service process!");

            // 则此application::onCreate 是被service 调用的,直接返回
            return;
        }


        如何获取processAppName请参考以下方法。
        private String getAppName(int pID) {
            String processName = null;
            ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值