融雲頭像顯示


融雲有兩種方式顯示頭像,但不能同時使用

 

1、實現 用戶提供者 ,自己實現方法 自己提供用戶的信息(id,name,頭像)

 

2、消息體攜帶用戶信息  setMessageAttachedUserInfo

這種方式會在每條發送的消息里都攜帶當前登陸用戶的信息,增加消息的長度。

使用這種方式跟 iOS 互通時,需要 iOS 側也在消息里攜帶用戶信息,這樣才能在兩側都正常顯示昵稱和頭像。

 

如果你的服務端沒有通知用戶更新其他用戶信息的功能,只能選第二種了

 

 

 

在適當的時候 設置 用戶提供者,比如 驗證token 連接成功之后

第一種 讓activity 實現RongIM.UserInfoProvider 

RongIM.setUserInfoProvider(MainActivity.this, true);

怎么實現這個方法看自己

    @Override
    public UserInfo getUserInfo(String id) { //通過id 返回 userinfo return new UserInfo(id,name, Uri.parse(url)); }

第二種

        RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {
            @Override
            public UserInfo getUserInfo(String id) { return new UserInfo(id,name, Uri.parse(url)); } }, true);

這個方法在對話時獲取信息的時候才會被調用,如果取到了用戶信息,就不再調用了,但是沒有取到的話,每次有新消息就會調用一下

里面的id,發現信息的用戶的id,根據用戶的id,由自己去獲取用戶的id(已經獲取) name 頭像

比如 我這里是用bmob存儲用戶數據的,我拿到id之后,會去查詢bmob的用戶表,取得用戶的信息,然后返回 UserInfo

 

更新頭像和名字

用戶如果改變了頭像,sdk也提供了一種方法更新頭像,用戶id和username一般情況是不會改變的,當然這個username你也可以換成昵稱

 傳入更新的用戶對象,他的id,(新)name,(新)頭像

RongIM.getInstance().refreshUserInfoCache(new UserInfo("userId", newname, Uri.parse(newicon)));

 

AB聊天,此時A更換了頭像成功,調用refreshUserInfoCache,A在對話框顯示新的頭像,但是B並不知道A換了頭像,還是顯示之前的老頭像,所以這第一種方法需要服務端來提醒用戶端更新信息

我使用的bmob沒有這個功能

 

 

現在來試試 setMessageAttachedUserInfo

首先要設置對象

我選擇在token驗證成功的時候,這里的 name url 直接從服務端查詢id得到

RongIM.getInstance().setCurrentUserInfo(new UserInfo(id1,name1,Uri.parse(url1)));

 

然后在開啟聊天之前設置消息攜帶用戶信息

RongIM.getInstance().setMessageAttachedUserInfo(true);
RongIM.getInstance().startPrivateChat(Activity.this, "10000", "與電信聊天");

 

這樣設置的話,當A更新信息之后,開啟對話,首先他自己的頭像會變成新頭像,此時B那邊的A還是老頭像,當A發送一條消息過來,B中A所有的老頭像都會刷新成新的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM