融云中群成員是有App自己提供并進(jìn)行維護(hù)的,融云只是同步群組關(guān)系數(shù)據(jù),并不保存群組的具體信息,融云會(huì)更趨開(kāi)發(fā)者同步的群組數(shù)據(jù)計(jì)算群組成員信息并群發(fā)消息,所以當(dāng)界面組件創(chuàng)建會(huì)話需要顯示群組信息時(shí)独令,需要向app獲取,app需要設(shè)置群組信息提供者 ---融云語(yǔ)
群組或用戶信息同步:
融云認(rèn)為健全的app都應(yīng)該在本地獲取好芭,緩存并更新用戶信息燃箭,融云并不維護(hù)相應(yīng)的信息,由app提供用戶信息可以避免更新不夠及時(shí)舍败,App中不同界面的用戶信息不統(tǒng)一能夠獲取更好的用戶體驗(yàn)招狸;
-
設(shè)置用戶信息提供者:
①在app的啟動(dòng)頁(yè)面中,我是在Application中進(jìn)行設(shè)置的內(nèi)容提供者邻薯;
② 調(diào)用RonIM.setUserInfoProvider(這個(gè)provider是相對(duì)來(lái)說(shuō)實(shí)時(shí)在拉取緩存的用戶信息)瓢颅,由于我的程序沒(méi)有提供數(shù)據(jù)庫(kù)緩存,所以在實(shí)時(shí)的拉取都是請(qǐng)求網(wǎng)絡(luò)的弛说,這里可以做一個(gè)判斷:如果該緩存中沒(méi)有該用戶的信息挽懦,那么就網(wǎng)絡(luò)刷新,如果有直接就拉取讓融云拉取緩存數(shù)據(jù)就行木人,如果有數(shù)據(jù)庫(kù)信柿,那么就可以先判斷緩存中有沒(méi)有,如果沒(méi)有就拉取數(shù)據(jù)庫(kù)中的醒第,數(shù)據(jù)庫(kù)如果沒(méi)有就拉取網(wǎng)絡(luò)的渔嚷,這樣更加好,但是這個(gè)有一點(diǎn)不好就是稠曼,當(dāng)用戶修改姓名形病,但是app中有數(shù)據(jù)就沒(méi)法進(jìn)行實(shí)時(shí)的刷新。
/** * 設(shè)置用戶信息的提供者,供 RongIM 調(diào)用獲取用戶名稱和頭像信息漠吻。 * * @param userInfoProvider 用戶信息提供者量瓜。 * @param isCacheUserInfo 設(shè)置是否由 IMKit 來(lái)緩存用戶信息。<br> * 如果 App 提供的 UserInfoProvider * 每次都需要通過(guò)網(wǎng)絡(luò)請(qǐng)求用戶數(shù)據(jù)途乃,而不 是將用戶數(shù)據(jù)緩存到本地內(nèi)存绍傲,會(huì)影響用戶信息的加載速度;<br> * 此時(shí)最好將本參數(shù)設(shè)置為 true耍共,由 IMKit 將用戶信息緩存到本地內(nèi)存中烫饼。 * @see UserInfoProvider */ RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() { @Override public UserInfo getUserInfo(String userId) { return findUserById(userId);//根據(jù) userId 去你的用戶系統(tǒng)里查詢對(duì)應(yīng)的用戶信息返回給融云 SDK。(這里可以用于請(qǐng)求網(wǎng)试读,但是return null) } }, true);