环信

第一步 注册并创建应用

注册环信账号,并登陆,然后在我的应用中,创建应用
填写创建应用的名称(内容只限于数字、大小写字母),如下图:
填写好应用名称后,点确定。创建成功,系统会为你生成 AppKey 以及相关配置信息,如下图。红色方框里面的内容是需要再manifest进行配置的。
第二步 集成SDK
下载SDK,集成环信的SDK,加压SDK有这几个文件,doc(SDK相关API文档)、examples(ChatDemoUI3.0:Demo,依赖的EaseUI)、libs(包含IM和实时音视频功能所需要的jar和so文件)、libs.without.audio(无实时语音、实时视频功能的SDK包)
如果不需要语音功能,直接可以把libs.without.audio复制到项目的libs目录下,然后,对于jar包,add as library。


在manifest中增加以下权限,里面 < uses-permission android :name= "android.permission.ACCESS_MOCK_LOCATION" />会标红,不用管它,或者注释掉也可以。
< 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" />
在mainfest配置你的apk及服务广播,方框中的标示就是上面你注册时显示的标示,下面的服务、广播是自己需要写相应的reciver与service类。
写一个application类,在其中加入以下内容
在 application 的 oncreate 方法中做初始化 ,初始化的时候需要传入设置好的 options。
1
2
3
4
5
6
7
8
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 库的就不用理会这个。
1
2
3
4
5
6
7
8
9
10
11
12
13
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 请参考以下方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private String getAppName(int pID) {
String processName = null;
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List l = am.getRunningAppProcesses();
Iterator i = l.iterator();
PackageManager pm = this.getPackageManager();
while (i.hasNext()) {
ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
try {
if (info.pid == pID) {
processName = info.processName;
return processName;
}
} catch (Exception e) {
// Log.d("Process", "Error>> :"+ e.toString());
}
}
return processName;
}
在 ProGuard 文件中加入以下 keep。
1
2
-keep class com.hyphenate.** {*;}
-dontwarn com.hyphenate.**
然后你便可以进行正常的注册与登录了。
注册时,最好开启一个线程。
new Thread( new Runnable() {
@Override
public void run() {
try
{
EMClient. getInstance ().createAccount( username , pwd );

intent .putExtra( "username" , username );
intent .putExtra( "pwd" , pwd );
intent .addFlags(Intent. FLAG_ACTIVITY_CLEAR_TOP );
RegisterActivity. this .setResult( 0 , intent );
finish();


} catch (HyphenateException E)
{
Log. e ( "Tag" , "注册失败" );
}
}
}).start();
登陆:登陆可以在主线程中操作
EMClient. getInstance ().login(currentUsername, currentPassword, new EMCallBack() {
@Override
public void onSuccess() {
EMClient. getInstance ().groupManager().loadAllGroups();
EMClient. getInstance ().chatManager().loadAllConversations();
Log. e ( "TAG" , "登录聊天服务器成功!" );
EMClient. getInstance ().chatManager().loadAllConversations();
EMClient. getInstance ().groupManager().loadAllGroups();
Intent intent= new Intent();
intent.putExtra( "user" , currentUsername );
intent.setClass(LoginActivity. this ,MainActivity. class );
startActivity(intent);
}

@Override
public void onError( int i, String s) {
Log. e ( "TAG" , "登录聊天服务器失败!" );
}

@Override
public void onProgress( int i, String s) {

}
});
第三步
集成EaseUi(如果你想用环信的UI可以进行这一步,注意集成EaseUI会与上一步的SDK冲突)集成EaseUi注意要初始化,
EMOptions options= new EMOptions();
options.setAcceptInvitationAlways( false );
//EMClient.getInstance().init(applicationContext, options);

//在做打包混淆时,关闭debug模式,避免消耗不必要的资源
//EMClient.getInstance().setDebugMode(true);
EaseUI. getInstance ().init( applicationContext , options);,或者看官方文档,写的比较详细,把SDK的初始化注释掉,也可不注释掉。
首先确保你下载的是最新版本,将里面的gradle.builde删除,然后通过file-->new--->import moudle方式引入,名字你可以修改也可以直接默认。一定要有next-->next-->finish,不能直接finish,要不然容易出错。
引入的以后,点击你自己moudle,open moudle setting, 在dependencies选项卡中引入easeUI moudle。
然后打开easeUI moudle的build.gradle,将android中的compileSdkVersion 与buildToolsVersion该为何你自己的moudle一致。在dependencies中,如果有标红,改成你已经下载的,如我的是将 compile 'com.android.support:support-v4:24.0.0'改为 compile 'com.android.support:support-v4:23.0.0'与buildToolsVersion的版本相符,23.后的数字可以不一致,只要你已经下载的就可以。
然后删除你第二部集成的SDK,因为easeUI已经集成了SDK,如果你不删除第二步集成的,会造成包冲突。
第四步、实现正常的通话
EaseChatFragment easeChatFragment=new EaseChatFragment();
Bundle args = new Bundle();
// CHATTYPE_SINGLE 代表个人用户
args.putInt(EaseConstant. EXTRA_CHAT_TYPE , EaseConstant. CHATTYPE_SINGLE );
//username是对方的账号,我这里是写死了,实现两个账号正常通信,可以通过注册分别传入不同的username,这两个username必须要是好友,且在你申请的环信appkey已经注册过了。为了方便,你可以注册账号,然后在你申请的环信应用appkey将两个账号添加为各自的好友,
args.putString(EaseConstant. EXTRA_USER_ID , username );
easeChatFragment .setArguments(args);
fragmentTransaction.add(R.id. fragment_container , easeChatFragment , "easeChatFragment" );

我所遇到的问题
Error:A problem occurred configuring project ':app'.
> Could not find support-v4.jar (com.android.support:support-v4:24.0.0).
Searched in the following locations:
解决方案,更改版本,改为你已经下载过的。上面已经介绍过。
SDK与easeUi冲突
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值