融雲訊息暱稱以及頭像設定的方法
阿新 • • 發佈:2019-01-22
融雲
融雲認為,每一個設計良好且功能健全的 App 都應該能夠在本地獲取、快取並更新使用者資訊。所以,融雲不維護使用者基本資訊(使用者 Id、暱稱、頭像)。此外,App 提供使用者資訊也避免了由於快取導致的使用者資訊更新不及時,App 中不同介面上的使用者資訊不統一(比如:一部分 App 從 App 伺服器上獲取並顯示,一部分由融雲伺服器獲取並顯示),能夠獲得最佳的使用者體驗。
融雲提供了兩種方式從 App 的資料來源顯示使用者暱稱和頭像。
1、設定使用者資訊提供者
/**
* 設定使用者資訊的提供者,供 RongIM 呼叫獲取使用者名稱稱和頭像資訊。
*
* @param userInfoProvider 使用者資訊提供者。
* @param isCacheUserInfo 設定是否由 IMKit 來快取使用者資訊。<br>
* 如果 App 提供的 UserInfoProvider
* 每次都需要通過網路請求使用者資料,而不是將使用者資料快取到本地記憶體,會影響使用者資訊的載入速度;<br>
* 此時最好將本引數設定為 true,由 IMKit 將使用者資訊快取到本地記憶體中。
* @see UserInfoProvider
*/
RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {
@Override
public UserInfo getUserInfo(String userId) {
return findUserById(userId);//根據 userId 去你的使用者系統裡查詢對應的使用者資訊返回給融雲 SDK。
}
}, true);
融雲不儲存使用者的資訊,所以 getUserInfo方法需要去 App 的伺服器非同步的獲取使用者資訊,不能實時返回使用者資訊。這個時候需要在成功獲取到使用者資訊的非同步回撥中使用refreshUserInfoCache來重新整理使用者的資訊。
/**
* 重新整理使用者快取資料。
* @param userInfo 需要更新的使用者快取資料。
*/
RongIM.getInstance().refreshUserInfoCache(new UserInfo(使用者id, 使用者name, Uri.parse(頭像地址)));
2、使用訊息攜帶使用者資訊
當 App 本身沒有使用者系統或者因為某些原因不方便使用上述使用者資訊提供者的時候,可以使用訊息攜帶使用者資訊來發送給訊息接收方。
(1) 設定當前使用者資訊
/**
* 設定當前使用者資訊,
* @param userInfo 當前使用者資訊
*/
RongIM.getInstance().setCurrentUserInfo(new UserInfo(使用者id, 使用者name, Uri.parse(頭像地址)));
(2) 設定訊息體內攜帶使用者資訊
/**
* 設定訊息體內是否攜帶使用者資訊。
* @param state 是否攜帶使用者資訊,true 攜帶,false 不攜帶。
*/
RongIM.getInstance().setMessageAttachedUserInfo(true);
接收方在接收到訊息後,SDK 會自動從訊息中取出使用者資訊,並顯示到 UI 上。
注意:這種方式不要和使用者資訊提供者混用,使用這種方式跟 iOS 互通時,需要 iOS 端也在訊息裡攜帶使用者資訊,這樣才能在兩端都可以正常顯示暱稱和頭像。