Android 十分钟集成环信聊天+设置头像昵称。。

从网上看了这么多的案例都是坑呐。。
所以自己写一个。。
首先是集成环信的model,这个有很多教程,不过还是写下我集成的过程。。

第一步 注册。。

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

第二步 下载sdk和module。。

官网下载链接
在这里插入图片描述

第三步 导入easyui这个module

我们集成其中的easyui这个module
在 examples下有个easyui
如何导入module呢?
点这个。。
在这里插入图片描述
然后添加到依赖里。。
先点这个
在这里插入图片描述
然后点这个
在这里插入图片描述
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<String,EaseUser> 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;
    }

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


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

猜你喜欢

转载自blog.csdn.net/weixin_39722329/article/details/86743039