iOS 環信整合 五 載入會話列表

2021-07-06 10:40:57 字數 3561 閱讀 1193

昨天,去忙別的事情了,今天繼續更新環信整合的教程。

首先,我們自定義乙個cell,用來實現會話框的好友暱稱、訊息、傳送時間等。繼承於ycbasetableviewcell,這個是我自己寫的乙個自定義cell的基類,你如果沒有引用我的ycbasetableviewcell檔案,直接繼承蘋果的uitableviewcell即可。然後,新增一些初始化控制項的**,如下:

#import "ycbasetableviewcell.h"

@inte***ce

conversationcell : ycbasetableviewcell

@property (retain, nonatomic) uilabel *labname;

@property (retain, nonatomic) uilabel *labmsg;

@property (retain, nonatomic) uilabel *labtime;

@property (retain, nonatomic) uiimageview *imgheader;

@end

#import "conversationcell.h"

@implementation

conversationcell

- (id)initwithstyle:(uitableviewcellstyle)style reuseidentifier:(nsstring *)reuseidentifier

return

self;

}- (void)setdictinfo:(nsdictionary *)dictinfo

@end

#import "chatlistviewcontroller.h"

#import "chatviewcontroller.h"

#import "conversationcell.h"

#import "converttocommonemoticonshelper.h"

@inte***ce

chatlistviewcontroller ()

@end

2、獲取聊天管理器物件

這個步驟很重要,缺少這個就載入不了會話的資料。

[self getallconversations]; //獲取所有的會話

}- (void)viewdidload

3、獲取所有的會話

//獲取所有的會話

- (void)getallconversations

資料都已經載入好了,定義乙個arrconversations陣列接收資料,然後用列表顯示出來。

#pragma mark - uitableview delegate & datasource

- (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

emconversation *conversation = [arrconversations objectatindex:indexpath.row];

switch (conversation.conversationtype)

//群聊會話

case econversationtypegroupchat:}}

//聊天室會話

case econversationtypechatroom:

default:

break;

}// cell.labmsg.text = [self subtitlemessagebyconversation:conversation];

return cell;

}

好吧,我們來編譯一下。

哎呦,不錯喔,但是感覺還是少點什麼。我們應該要顯示最後收到的一條訊息,和收到訊息的時間,對吧。

用下面這個方法,記得先引入乙個轉換表情的類:

#import 

"converttocommonemoticonshelper.h"

//得到最後訊息文字或者型別

-(nsstring *)subtitlemessagebyconversation:(emconversation *)conversation

break;

//文字型別

case emessagebodytype_text:

break;

//語音型別

case emessagebodytype_voice:

break;

//位置型別

case emessagebodytype_location:

break;

case emessagebodytype_video:

break;

default:

break;}}

return ret;

}

ok ,一步一步來,我們編譯一下,看看效果。

very good ! 然後我們在把收到訊息的時間給加上。

1、先引入乙個處理時間的標頭檔案:

#import 

"nsdate+category.h"

2、新增處理時間的方法:

// 得到最後訊息時間

-(nsstring *)lastmessagetimebyconversation:(emconversation *)conversation

return ret;

}

3、在列表中顯示

在numberofrowsinsection方法中新增:

cell.labtime.text = [self

lastmessagetimebyconversation:conversation]; //顯示收到訊息的時間

完工,編譯看效果。

有讀者反饋,傳送訊息不顯示時間,會話列表也不顯示時間。原因是因為沒有新增」localizable.string」這個檔案。新增進去,重新編譯,即可顯示時間。如下圖:

iOS開發 環信載入會話列表

1.新建乙個cell 首先,我們自定義乙個cell,用來實現會話框的好友暱稱 訊息 傳送時間等。繼承於ycbasetableviewcell,這個是我自己寫的乙個自定義cell的基類,你如果沒有引用我的ycbasetableviewcell檔案,直接繼承蘋果的uitableviewcell即可。然後...

iOS 整合環信(四)

本節主要仿照環信demo來建立demo的介面。我們在使用環信的demo可以看到環信的整個介面框架是uitabbarcontroller作為主控制器,裡面裝了會話conversationlistcontroller 通訊錄contactlistviewcontroller和設定settingsview...

iOS環信整合心得

首先對於新手來說,一定要先去看環信api的伺服器整合文件,去了解一下資料儲存的邏輯,要不然會有很多轉不過彎的問題 然後我就直接上關鍵 nsmutablearray datasources return datasources void viewdidload 接收好友訊息 void messages...