實現用戶信息提供者,可在 AppDelegate.m 中遵循協議 RCIMUserInfoDataSource,RCIMGroupInfoDataSource,
設置代理
[[RCIM sharedRCIM] setUserInfoDataSource:self];
[[RCIM sharedRCIM] setGroupInfoDataSource:self];
實現方法
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion;
群組信息提供者:
- (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *))completion;
方法調用說明:
這兩個方法,由 RCIM 類創建單例進行實現,所以整個工程中只需要實現一次就可以。
當會話列表或者會話界面中對應的用戶需要顯示的時候,每一個用戶都會觸發這個方法,所以協議方法中的參數 UserID/groupID 就是對應這個需要顯示的用戶的 ID,這個 ID 是已知的,可以直接應用。進而,開發者能夠通過這個已知的 UserID,獲取到該 UserID 對應的保存在自己服務器或者之前自行創建數據庫寫入的用戶信息,并實現完整回調。
值得注意的是,當用戶第一次需要顯示的時候,該方法會被觸發,并自動對該用戶進行了信息的緩存。在 App 存活的生命周期中,之后該用戶需要顯示的時候,便不會觸發該方法,SDK 自動遍歷緩存的數據。(從 2.6.0 開始 IMKit 可以緩存用戶信息到數據庫里,開發者可以開啟 RCIM.h 里的? enablePersistentUserInfoCache )
用戶/群組信息提供者的協議代理方法完整回調之后,能夠保證 App 的本地通知功能,對應顯示的用戶信息完整正確。
如果,當用戶信息更改的時候,需要對應實現 RCIM 類中的這兩個方法進行更新。
/**
* 本地用戶信息改變,調用此方法更新kit層用戶緩存信息
* @param userInfo 要更新的用戶實體
* @paramuserId? 要更新的用戶 Id
*/
- (void)refreshUserInfoCache:(RCUserInfo *)userInfo
withUserId:(NSString *)userId;
/**
* 本地群組信息改變,調用此方法更新kit層群組緩存信息
* @param groupInfo 要更新的群組實體
* @param groupId? 要更新的群組 Id
*/
- (void)refreshGroupInfoCache:(RCGroup*)groupInfo
withGroupId:(NSString *)groupId;
清除用戶信息緩存的接口:
/**
*? 清除所有本地用戶信息的緩存。
*/
- (void)clearUserInfoCache;
/**
*? 清除所有本地群組信息的緩存。
*/
- (void)clearGroupInfoCache;
用戶信息的相關接口已經提供,具體邏輯實現每個開發者都是各有己見,不再贅述。
轉自融云