php 环信easyui_Android 十分钟集成环信聊天+设置头像昵称。。-Go语言中文社区

从网上看了这么多的案例都是坑呐。。

所以自己写一个。。

首先是集成环信的model,这个有很多教程,不过还是写下我集成的过程。。

第一步 注册。。

瞎填就好,反正没有关系。。

第二步 下载sdk和module。。

第三步 导入easyui这个module

我们集成其中的easyui这个module

在 examples下有个easyui

如何导入module呢?

点这个。。

7d37297269cfd51edf6f31f2fbb6ecf6.png

然后添加到依赖里。。

先点这个

f9b543766dfe83c4e0206d0d6fc9433e.png

然后点这个

d04299a9e53ebcc94260344b24acc204.png

ok了同志们到现在为止,我们就成功的将环信的easyui添加进去了。。

接下来是使用。。

第四步 设置头像昵称。。

看一下easyui的源码,我们发现了一个接口叫做

/**

* User profile provider

* @author wei

*

*/

public interface EaseUserProfileProvider {

/**

* return EaseUser for input username

* @param username

* @return

*/

EaseUser getUser(String username);

}

啊哈,看来这个接口有点意思。

并且有set函数叫做在EaseUI这个类里

/**

* set user profile provider

* @param provider

*/

public void setUserProfileProvider(EaseUserProfileProvider userProvider){

this.userProvider = userProvider;

}

那么我们实现这个接口就好了。。

public class MyUserProvider implements EaseUI.EaseUserProfileProvider {

private static MyUserProvider myUserProvider;

// 设计成了单类。。

private Map userList = new HashMap<>();

// 我服务器上获得头像的url

private String ImgUrl="http://xxxxx";

@Override

public EaseUser getUser(String username) {

if(userList.containsKey(username))

//有就返归这个对象。。

return userList.get(username);

System.out.println("error : 没有 数据" + username);

return null;

}

// 封装了一下

public void setUser(String username,String nickname){

if(!userList.containsKey(username)) {

EaseUser easeUser = new EaseUser(username);

userList.put(username,easeUser);

}

EaseUser easeUser = getUser(username);

// 不用怀疑。环信的easerUser的父类有一个setNickname 的方法可以用来设置昵称,直接调用就好。。

easeUser.setNickname(nickname);

// 同理,设置一个图像的url就好,因为他加载头像是使用glide加载的

easeUser.setAvatar(ImgUrl+username);

}

// 按照你喜欢的修改一下初始化函数吧,

private MyUserProvider(){

System.out.println("init myTestProfileProvider");

}

// 获取单类。。

public static MyUserProvider getInstance() {

if (myUserProvider == null) {

myUserProvider = new MyUserProvider();

}

return myUserProvider;

}

}

ok了,自此就可以完美的使用easyui,并且可以显示用户头像和昵称了。。

当然了不要忘了调用和初始化

在你的环形初始化的那个类里面加上这一句

// 设置自己实现的提供用户名和昵称的provider EaseUI.getInstance().setUserProfileProvider(MyUserProvider.getInstance());

实现显示用户头像和昵称的原理。。

为什么呢?看下源码。。

这是easyui里 加载头像和昵称的源码。。

/**

* set user avatar

* @param username

*/

public static void setUserAvatar(Context context, String username, ImageView imageView){

EaseUser user = getUserInfo(username);

if(user != null && user.getAvatar() != null){

try {

int avatarResId = Integer.parseInt(user.getAvatar());

Glide.with(context).load(avatarResId).into(imageView);

} catch (Exception e) {

//use default avatar

Glide.with(context).load(user.getAvatar()).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.ease_default_avatar).into(imageView);

}

}else{

Glide.with(context).load(R.drawable.ease_default_avatar).into(imageView);

}

}

\ 加载昵称的。。

/**

* set user's nickname

*/

public static void setUserNick(String username,TextView textView){

if(textView != null){

EaseUser user = getUserInfo(username);

if(user != null && user.getNickname() != null){

textView.setText(user.getNickname());

}else{

textView.setText(username);

}

}

}

然后这是 easyui里 getUserInfo()的实现

/**

* get EaseUser according username

* @param username

* @return

*/

public static EaseUser getUserInfo(String username){

if(userProvider != null)

return userProvider.getUser(username);

return null;

}

啊哈就是调用我们实现的接口类。。

所以说实现一个接口类就可完美的做到自定义昵称和头像。。我搜索了半天都没有找到如何实现的。。

蓝瘦。。

聊天如何实现的和源码啥的,我整理一下就放到下面。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值