iOS 融云頭像,未讀信息數(shù),客服集成注意事項(xiàng)

一、 融云設(shè)置頭像和昵稱

1. 給自己設(shè)置頭像和昵

給自己設(shè)置頭像和昵稱的時(shí)候,一般都是在所有要要登錄融云的地方(我公司項(xiàng)目有幾種登錄方式,每一種登錄成功后,才可以連接融云,所以有幾個(gè)地方調(diào)用到),登錄成功后就給自己設(shè)置頭像和昵稱的。

    // 連接融云
    [[RCIM sharedRCIM] connectWithToken:@"LqWuHyw639I+N/NxLK1vgd364tkAAG9LQ/noLNtW9iD4dLdnOfiMK/5rEO5+6+EyUkCYC8DW6mAOpABTN7DJlB4S8yEP3s3V"     success:^(NSString *userId) {
        NSLog(@"登陸成功。當(dāng)前登錄的用戶ID:%@", userId);
        
        [[RCIM sharedRCIM] setUserInfoDataSource:self];
        
        RCUserInfo *myUser = [[RCUserInfo alloc]init];
        myUser.userId = @"#123456";
        myUser.portraitUri = @"http://p2.wmpic.me/article/2014/09/26/1411703269_MyeEjKTf.jpeg";
        myUser.name = @"自己";
        [RCIM sharedRCIM].currentUserInfo = myUser;
        
    } error:^(RCConnectErrorCode status) {
        NSLog(@"登陸的錯(cuò)誤碼為:%ld", status);
    } tokenIncorrect:^{
        //token過期或者不正確。
        //如果設(shè)置了token有效期并且token過期,請(qǐng)重新請(qǐng)求您的服務(wù)器獲取新的token
        //如果沒有設(shè)置token有效期卻提示token錯(cuò)誤,請(qǐng)檢查您客戶端和服務(wù)器的appkey是否匹配,還有檢查您獲取token的流程。
        NSLog(@"token錯(cuò)誤");
    }];
2. 給其他人設(shè)置頭像和昵稱

融云給了一個(gè)代理讓我們給相應(yīng)的用戶ID賦值頭像,這個(gè)代理是只要有新的用戶ID給你發(fā)消息,就會(huì)走一次的,數(shù)據(jù)源是全局的只需要在一個(gè)地方賦值,其他地方就不用賦值了,我這里是在Appdelegate做的

①添加代理

@interface AppDelegate ()<RCIMUserInfoDataSource>

②設(shè)置代理

[[RCIM sharedRCIM] setUserInfoDataSource:self];

③實(shí)現(xiàn)代理
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion {
    
    
    
    if ([userId isEqualToString:@"#11111"])
    {
        RCUserInfo *userInfo = [[RCUserInfo alloc]init];
        userInfo.userId = userId;
        userInfo.name = @"小美";
        userInfo.portraitUri = @"http://www.hinews.cn/pic/0/16/23/56/16235619_993606.jpg";
        return completion(userInfo);
        
    }
    else if([userId isEqualToString:@"#22222"])
    {
        RCUserInfo *otherUser = [[RCUserInfo alloc]init];
        otherUser.userId = userId;
        otherUser.portraitUri = @"http://img.jf258.com/uploads/2013-07-13/064651670.jpg";
        otherUser.name = @"大頭";
        return completion(otherUser);
        
    }
    else if ([userId isEqualToString:@"#33333"])
    {
        RCUserInfo *otherUser = [[RCUserInfo alloc]init];
        otherUser.userId = userId;
        otherUser.portraitUri = @"http://p2.wmpic.me/article/2014/09/26/1411703269_MyeEjKTf.jpeg";
        otherUser.name = @"客服1";
        return completion(otherUser);
        
    }

//上面三組是測(cè)試用的,實(shí)際開發(fā)的時(shí)候應(yīng)該是后臺(tái)提供一條接口,傳入U(xiǎn)serid 能夠返回對(duì)應(yīng)Userid 的昵稱和頭像
 [manager POST:kGetUserBaseInfo parameters:parameter progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSDictionary *repData = (NSDictionary *)responseObject;
        
        UCUNewBaseClass *baseData = [UCUNewBaseClass modelObjectWithDictionary:repData];
        if ([baseData.status isEqualToString:xRequestStatusOK])
        {
            RCUserInfo *userInfo = [[RCUserInfo alloc]init];
            userInfo.userId = baseData.data.dataIdentifier;
            userInfo.name = baseData.data.nickName;
            userInfo.portraitUri = baseData.data.profilePhoto;
            
            // 刷新融云對(duì)應(yīng)用戶信息 ,一定要記得寫上這句代碼,否則無法刷新,因?yàn)槭钱惒降?            [[RCIM sharedRCIM] refreshUserInfoCache:userInfo withUserId:userId];
            
            return completion(userInfo);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
    }];
    
  
}

二、所有未讀消息的顯示

不管你集成多簡(jiǎn)單的單聊都會(huì)跟著要集成一個(gè)會(huì)話列表的,有了會(huì)話列表就要做所有的對(duì)話未讀的信息數(shù)量,會(huì)話列表就不用多說了,看官網(wǎng)就可以集成,現(xiàn)在主要說說如何顯示未讀信息數(shù)。
從官網(wǎng)的文檔上可以知道,通過下面這個(gè)方法可以獲取所有的未讀消息數(shù),是動(dòng)態(tài)的,
int totalUnreadCount = [[RCIMClient sharedRCIMClient] getTotalUnreadCount]
獲得的未讀消息數(shù),什么時(shí)候去刷新未讀消息數(shù)呢,SDK 提供了兩個(gè)代理分別是代理①和代理②,可以監(jiān)聽什么時(shí)候有消息過來。者兩個(gè)代理長(zhǎng)得很像,如果用錯(cuò)了,將會(huì)導(dǎo)致嚴(yán)重的 bug , 會(huì)話界面用戶將不能主動(dòng)接受消息,如果你是集成的 IMKit 的東西,就不要用代理②,一定要用代理①,一定要用代理①,一定要用代理①?。?!

代理①
<RCIMReceiveMessageDelegate>
[[RCIM sharedRCIM] setReceiveMessageDelegate:self];

- (void)onRCIMReceiveMessage:(RCMessage *)message left:(int)left {

// 這個(gè)代理是在分線層的, 刷新數(shù)據(jù)要在主線程進(jìn)行哦,我的工程未讀消息是在一個(gè) cell 上的,所以我刷新數(shù)據(jù)就可以了。
    dispatch_async(dispatch_get_main_queue(), ^{
        
        [self.mainTableView reloadData];
        
    });

}

代理②
<RCIMClientReceiveMessageDelegate>
[[RCIMClient sharedRCIMClient] setReceiveMessageDelegate:self object:nil];

- (void)onReceived:(RCMessage *)message left:(int)nLeft object:(id)object {   
}

三、 集成客服

官網(wǎng)寫的很簡(jiǎn)單,我就按照官網(wǎng)的寫了,可是不管是機(jī)器人,還是人工的按鈕,為啥都不會(huì)跳出來呢,客服ID 也沒有寫錯(cuò),原來是當(dāng)你去融云后臺(tái)開通客服后,至少要等上2個(gè)小時(shí)甚至是半天才能生效,生效之后你點(diǎn)擊聊天,就會(huì)有個(gè)蠢蠢的機(jī)器人跟你聊天了,當(dāng)你在客服后臺(tái)登錄賬號(hào)之后,即可以測(cè)試人工聊天啦

- (IBAction)serviceBtnClicked:(id)sender {
    
    RCConversationViewController *conversationVC = [[RCConversationViewController alloc]init];
    conversationVC.conversationType = ConversationType_CUSTOMERSERVICE;
    #define SERVICE_ID @"KEFU152332895163221"
    conversationVC.targetId = SERVICE_ID;
    conversationVC.title = @"客服";
    self.tabBarController.tabBar.hidden = YES;
    [self.navigationController pushViewController:conversationVC animated:YES];
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,301評(píng)論 0 15
  • 前言 最近項(xiàng)目需要增加即時(shí)通訊功能,主要有2大需求 單聊 和 群聊,花了點(diǎn)時(shí)間研究了一下,最近項(xiàng)目也集成完畢,在這...
    Leon_520閱讀 3,769評(píng)論 1 16
  • 三十一、長(zhǎng)沙市井故事之家族與榮耀 一位朋友給新房子搞裝修,在輪換了地中海北歐巴洛克簡(jiǎn)約等等風(fēng)之后,最終確定為宇宙混...
    思想的豬閱讀 244評(píng)論 0 0
  • 在曾經(jīng)跌倒過的地方又狠狠栽了一跤。 甚至開始恐懼人際社交,自我懷疑。 常常把自己憋得胸口發(fā)慌。 聽過的道理很多,卻...
    03b78b91931c閱讀 151評(píng)論 0 0
  • 20180421悟我之心踐行堅(jiān)持150天。 一、讀《道德經(jīng)》第七十三章勇于不敢,收獲:人們立身處世是不能違背自然規(guī)...
    清晨的一抹朝霞閱讀 195評(píng)論 0 0

友情鏈接更多精彩內(nèi)容