iOS融云SDK頭像昵稱設(shè)置遇到的問題及最終解決辦法

1. 我遇到的問題

第一個問題:

我遵守了RCIMUserInfoDataSource代理并實(shí)現(xiàn)了代理方法,但是每次都是第一次進(jìn)會話列表只顯示內(nèi)容不顯示頭像和名稱揖闸,然后我點(diǎn)其他界面之后再點(diǎn)回去就有了 這種往往是因?yàn)闆]有及時刷新列表以及融云用戶對于信息導(dǎo)致的

解決方法

requestDataWithUserID的代碼如下:
//在請求自己服務(wù)器數(shù)據(jù)刷新 賦值完融云用戶信息資料后
    [JQTMessageHandlder getUserInfoWithUserIDs:userArray andModel:model callback:^(NSError *error, id obj) {
        @strongify(self)
        if (!error) {
            JQTUsersInfoModel *usersInfo = (JQTUsersInfoModel *)obj;
            NSLog(@"JQTUsersInfoModel-----%@",usersInfo);
            JQTPersonInfoModel *model = usersInfo.users[0];
            //        我在這里實(shí)例化了融云的用戶信息
            _userInfo2=[[RCUserInfo alloc]init];
            self.userInfo2.name = model.nickName;
            self.userInfo2.portraitUri = model.iconURL;
            
            
            
            //刷新融云對應(yīng)用戶信息
            [[RCIM sharedRCIM]refreshUserInfoCache:_userInfo2 withUserId:userID];
            
            //通知界面刷新
            [[NSNotificationCenter defaultCenter]postNotificationName:kJQTNotificationrefreshMessageHeaderInfo object:nil];
        }
    }];
    //注冊監(jiān)聽當(dāng)然要寫在當(dāng)前MessageMainViewController控制器的viewDidLoad里
實(shí)現(xiàn)代理方法:
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion {
    NSLog(@"----userId%@",userId);
    if ([userId isEqualToString:[NSString stringWithFormat:@"%i",[JQTVistorManager currentUserID]]]) {
        RCUserInfo *user = [[RCUserInfo alloc]init];
        user.userId = [NSString stringWithFormat:@"%i",[JQTVistorManager currentUserID]];
        user.name = [JQTVistorManager currentNick];
        user.portraitUri = [JQTVistorManager currentIconURL];
        return completion(user);
    }
//    //這里是別人的信息判斷我相信大家都可以看的懂
    if (![userId isEqualToString:[NSString stringWithFormat:@"%i",[JQTVistorManager currentUserID]]]) {

               dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
                dispatch_async(dispatch_get_main_queue(), ^{
                    
                    [self requestDataWithUserID:userId];
                    
                    if (_userInfo2) {
                        return completion(_userInfo2);
                    } else{
                       return completion(nil);
                    }
                });
        });
    }
    return completion(nil);
}

第二個問題:

我當(dāng)時并沒有仔細(xì)去研究,就匆匆寫在了我的聊天列表界面里.這導(dǎo)致我的app出現(xiàn)了一個問題衩茸,有幾個地方是直接調(diào)用聊天界面RCConversationViewController的,這幾個地方都沒有及時獲取到雙方的頭像昵稱信息蹲嚣,但只要加載過聊天列表界面,之后不管到哪個聊天界面都能正常加載頭像(這也是卡我最久的問題隙畜,下面有我的具體思路)

2. 我的實(shí)現(xiàn)過程以及思路

在設(shè)置融云的用戶聊天頭像和昵稱時,我首先是閱讀了融云官方sdk文檔议惰,然后再里面找到了這么一個方法,

/*!
 用戶信息提供者
 
 @discussion SDK需要通過您實(shí)現(xiàn)的用戶信息提供者言询,獲取用戶信息并顯示。
 */
@protocol RCIMUserInfoDataSource <NSObject>

/*!
 獲取用戶信息
 
 @param userId      用戶ID
 @param completion  獲取用戶信息完成之后需要執(zhí)行的Block [userInfo:該用戶ID對應(yīng)的用戶信息]
 
 @discussion SDK通過此方法獲取用戶信息并顯示运杭,請?jiān)赾ompletion中返回該用戶ID對應(yīng)的用戶信息。
 在您設(shè)置了用戶信息提供者之后辆憔,SDK在需要顯示用戶信息的時候,會調(diào)用此方法虱咧,向您請求用戶信息用于顯示。
 */
- (void)getUserInfoWithUserId:(NSString *)userId
                   completion:(void (^)(RCUserInfo *userInfo))completion;

基于以上資料我開始思考和研究腕巡,又在簡書上看到了這么一個帖子
http://www.reibang.com/p/c1bb39c72223 作者:Joy愛在西元前
文中更為詳細(xì)的介紹了融云的Api的細(xì)節(jié)。
看了看才知道我用的是第二種方案绘沉。在慶幸自己沒有混用的同時,我就繼續(xù)思考车伞,為什么我只有加載過列表界面,之后不管到哪個聊天界面都能正常加載頭像呢帖世?我是不是忽略了什么,于是我又仔細(xì)找了找日矫,發(fā)現(xiàn) 官方之前有說明:

http://support.rongcloud.cn/kb/MjYx 相信大家結(jié)合這兩篇文章,已經(jīng)有點(diǎn)明白到底怎么回事了

3. 解決問題

既然知道了問題原因哪轿,就是代理方法不應(yīng)該寫在聊天列表這里,那么到底應(yīng)該寫到哪里呢窃诉?參照上面第二個鏈接的文章,不難推測飘痛,是不是應(yīng)該寫在AppDelegate里呢,那就試一試宣脉,結(jié)果試完了發(fā)現(xiàn)车柠,依然不行塑猖,我注意到了我自己寫的兩處代碼

//第一處我在登錄界面的登錄成功的時候?qū)懴铝?            [JQTVistorManager storeIMToken:model.imToken];
            [self loginRongYunCloud:model.imToken];

//這兒是實(shí)現(xiàn)該方法
- (void)loginRongYunCloud:(NSString *)imToken {
    @weakify(self)
    [[RCIM sharedRCIM] connectWithToken:imToken success:^(NSString *userId) {
        [[RCIM sharedRCIM] setUserInfoDataSource:self];
        
        NSLog(@"登陸成功。當(dāng)前登錄的用戶ID:%@", userId);
        
    } error:^(RCConnectErrorCode status) {
        NSLog(@"登陸的錯誤碼為:%d", status);
    } tokenIncorrect:^{
        //token過期或者不正確羊苟。
        //如果設(shè)置了token有效期并且token過期,請重新請求您的服務(wù)器獲取新的token
        //如果沒有設(shè)置token有效期卻提示token錯誤蜡励,請檢查您客戶端和服務(wù)器的appkey是否匹配,還有檢查您獲取token的流程巍虫。
        NSLog(@"token錯誤");
    }];
}

(由于我的app產(chǎn)品設(shè)計(jì)有游客模式,這是前提)登錄成功了才有token 有了token才能去做一系列處理 在AppDelegate里顯然還未登錄占遥,先后順序錯了,自然就無效

所以最終在登錄界面添加了最開始那些代碼瓦胎,問題總算是解決了.希望我的小小的經(jīng)驗(yàn)也能幫助到跟我遇到同樣問題的你們.

以上純屬本人原創(chuàng),如有錯誤望指正搔啊,轉(zhuǎn)載請標(biāo)明來源和作者柬祠。by:鏡花水月cy

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末负芋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蠕嫁,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剃毒,死亡現(xiàn)場離奇詭異,居然都是意外死亡赘阀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門基公,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捺信,“玉大人酌媒,你說我怎么就攤上這事迄靠∶胱桑” “怎么了掌挚?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吠式。 經(jīng)常有香客問我,道長特占,這世上最難降的妖魔是什么糙置? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任是目,我火速辦了婚禮,結(jié)果婚禮上懊纳,老公的妹妹穿的比我還像新娘。我一直安慰自己嗤疯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布茂缚。 她就那樣靜靜地躺著屋谭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戴而。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音淮逊,去河邊找鬼。 笑死泄鹏,一個胖子當(dāng)著我的面吹牛郎任,可吹牛的內(nèi)容都是我干的备籽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼车猬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了珠闰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伏嗜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后承绸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡军熏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羞迷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡衔瓮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出热鞍,到底是詐尸還是另有隱情衔彻,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布艰额,位于F島的核電站,受9級特大地震影響柄沮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祖搓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拯欧。 院中可真熱鬧,春花似錦财骨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捌臊。三九已至,卻和暖如春娃属,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矾端。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秩铆,地道東北人砚亭。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓殴玛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滚粟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容