集成环信单聊SDK

本文详述了Android应用集成环信SDK的完整步骤,包括创建应用、下载SDK、配置代码环境和主界面操作。首先,通过环信官网注册应用并获取AppKey。接着,下载SDK,根据项目需求选择相应的jar和so文件导入。然后,在AndroidManifest.xml中添加必要的权限和meta-data。最后,在应用程序的Application中初始化环信SDK,并设置相关选项。主界面检查登录状态,未登录则跳转到登录页面。完成初始化后,可以发起和接收聊天。
摘要由CSDN通过智能技术生成

最新Android集成环信步骤详解

标签: 最新Android集成环信步骤详解android植入环信android即时通信环信使用方法环信怎么使用

目录(?)[+]

前一阵时间一直以为环信不能被个人用户注册,结果现在想试试结果真的注册进来了,各种打脸。今天趁着晚上有时间把环信继承的步骤做一个记录,方便以后的童鞋们能够快速的集成。


1.第一步:肯定是创建应用喽

那么具体步骤为了避免大家看的烦躁,我就不一一截图了,而是将官网的连接地址给大家po过来

http://docs.easemob.com/im/000quickstart/10register

当然从这个连接中可以清楚的看到


感觉这一巴掌真痛!!!

当然官方的文档多少有点出入,没关系,只需要创建好自己的应用就可以了。

第一步so easy

2.第二步:下载sdk

不用多说,照着文档下载就行。po上网址:

http://www.easemob.com/download/im


解压后是这样的。

考虑到开发者需求不一样,在下载的 SDK 中,提供了两个不同的 jar 包:

  • 一个是 libs 下带实时语音功能和实时视频功能的 jar 包和 so 文件。
  • 如果你不需要实时语音、实时视频功能,那就直接用 libs.without.audio 文件夹下的 jar 包及 so 文件。

在这里主要介绍后面四个文件夹内容:

  • doc 文件夹:SDK 相关  API 文档
  • examples 文件夹:ChatDemoUI3.0(Demo,依赖 EaseUI 库)、EaseUI
  • libs 文件夹:包含IM和实时音视频功能所需要的 jar 和 so 文件
  • libs.without.audio 文件夹:无实时语音、实时视频功能的 SDK 包,如果项目中只用到聊天功能,可以把项目里的 jar 和 so 文件替换成此文件夹里的
3.第三步:配置工程环境

简单的说,就是往你的项目中去粘贴东西就行了。

在自行开发的应用中,集成环信聊天需要把 libs 文件夹下的 jar 及 so 文件复制到你的项目的 libs 文件夹相应位置,如果不需要语音和视频通话功能,导入libs.without.audio 下的文件即可。

如图:


至于这些三方的so文件怎么导入请看我的另一篇文章

http://blog.csdn.NET/JerryWu145/article/details/52507658

4.第四步,配置代码环境

在清单文件 AndroidManifest.xml 里加入以下权限,以及写上你注册的 AppKey。

权限配置(实际开发中可能需要更多的权限,可参考 Demo):

[html]  view plain   copy
  print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="us.mifeng.guaju.huanxin">  
  4.     <uses-permission android:name="android.permission.VIBRATE" />  
  5.     <uses-permission android:name="android.permission.INTERNET" />  
  6.     <uses-permission android:name="android.permission.RECORD_AUDIO" />  
  7.     <uses-permission android:name="android.permission.CAMERA" />  
  8.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  9.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  10.     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
  11.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
  12.     <uses-permission android:name="android.permission.GET_TASKS" />  
  13.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  14.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  15.     <uses-permission android:name="android.permission.WAKE_LOCK" />  
  16.     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />  
  17.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  18.     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  
  19.     <application  
  20.         android:name="app.MyApp"  
  21.         android:allowBackup="true"  
  22.         android:icon="@mipmap/ic_launcher"  
  23.         android:label="@string/app_name"  
  24.         android:supportsRtl="true"  
  25.         android:theme="@style/AppTheme">  
  26.         <activity android:name=".MainActivity">  
  27.             <intent-filter>  
  28.                 <action android:name="android.intent.action.MAIN" />  
  29.                 <category android:name="android.intent.category.LAUNCHER" />  
  30.             </intent-filter>  
  31.         </activity>  
  32.   
  33.         <activity android:name=".LoginActivity">  
  34.         </activity>  
  35.         <activity  
  36.             android:name=".ChatActivity"  
  37.             android:windowSoftInputMode="adjustResize|stateHidden">  
  38.         </activity>  
  39.   
  40.         <meta-data android:name="EASEMOB_APPKEY"  android:value="guajujerry#im" />  
  41.         <!-- 声明SDK所需的service SDK核心功能-->  
  42.         <service android:name="com.hyphenate.chat.EMChatService" android:exported="true"/>  
  43.         <!-- 声明SDK所需的receiver -->  
  44.         <receiver android:name="com.hyphenate.chat.EMMonitorReceiver">  
  45.             <intent-filter>  
  46.                 <action android:name="android.intent.action.PACKAGE_REMOVED"/>  
  47.                 <data android:scheme="package"/>  
  48.             </intent-filter>  
  49.             <!-- 可选filter -->  
  50.             <intent-filter>  
  51.                 <action android:name="android.intent.action.BOOT_COMPLETED"/>  
  52.                 <action android:name="android.intent.action.USER_PRESENT" />  
  53.             </intent-filter>  
  54.         </receiver>  
  55.     </application>  
  56.   
  57. </manifest>  



关于 EASEMOB_APPKEY 对应的 value 获取,在创建应用后,申请 AppKey 并进行相关配置。(环信 Demo 中 AppKey 为 easemob-demo#chatdemoui)

接下来是对自己创建的application进行初始化配置:

[java]  view plain   copy
  print ? 在CODE上查看代码片 派生到我的代码片
  1. package app;  
  2.   
  3. import android.app.ActivityManager;  
  4. import android.app.Application;  
  5. import android.content.Context;  
  6.   
  7. import com.hyphenate.chat.EMClient;  
  8. import com.hyphenate.chat.EMOptions;  
  9.   
  10. import java.util.Iterator;  
  11. import java.util.List;  
  12.   
  13.   
  14. /** 
  15.  * Created by guaju on 2016/9/12. 
  16.  */  
  17. public class MyApp extends Application {  
  18.   
  19.     // 上下文菜单  
  20.     private Context mContext;  
  21.   
  22.     // 记录是否已经初始化  
  23.     private boolean isInit = false;  
  24.   
  25.     @Override  
  26.     public void onCreate() {  
  27.         super.onCreate();  
  28.         mContext = this;  
  29.   
  30.         // 初始化环信SDK  
  31.         initEasemob();  
  32.     }  
  33.   
  34.     /** 
  35.      * 
  36.      */  
  37.     private void initEasemob() {  
  38.         // 获取当前进程 id 并取得进程名  
  39.         int pid = android.os.Process.myPid();  
  40.         String processAppName = getAppName(pid);  
  41.         /** 
  42.          * 如果app启用了远程的service,此application:onCreate会被调用2次 
  43.          * 为了防止环信SDK被初始化2次,加此判断会保证SDK被初始化1次 
  44.          * 默认的app会在以包名为默认的process name下运行,如果查到的process name不是app的process name就立即返回 
  45.          */  
  46.         if (processAppName == null || !processAppName.equalsIgnoreCase(mContext.getPackageName())) {  
  47.             // 则此application的onCreate 是被service 调用的,直接返回  
  48.             return;  
  49.         }  
  50.         if (isInit) {  
  51.             return;  
  52.         }  
  53.         /** 
  54.          * SDK初始化的一些配置 
  55.          * 关于 EMOptions 可以参考官方的 API 文档 
  56.          * http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1_e_m_options.html 
  57.          */  
  58.         EMOptions options = new EMOptions();  
  59.         // 设置Appkey,如果配置文件已经配置,这里可以不用设置  
  60.         // options.setAppKey("guaju");  
  61.         // 设置自动登录  
  62.         options.setAutoLogin(true);  
  63.         // 设置是否需要发送已读回执  
  64.         options.setRequireAck(true);  
  65.         // 设置是否需要发送回执,TODO 这个暂时有bug,上层收不到发送回执  
  66.         options.setRequireDeliveryAck(true);  
  67.         // 设置是否需要服务器收到消息确认  
  68.         options.setRequireServerAck(true);  
  69.         // 收到好友申请是否自动同意,如果是自动同意就不会收到好友请求的回调,因为sdk会自动处理,默认为true  
  70.         options.setAcceptInvitationAlways(false);  
  71.         // 设置是否自动接收加群邀请,如果设置了当收到群邀请会自动同意加入  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值