欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

商業(yè)化IM客戶端接口設(shè)計(jì)分析

  對(duì)于剛接觸IM(即時(shí)通訊)開(kāi)發(fā),通過(guò)閱讀成熟的商業(yè)代碼能夠?qū)磿r(shí)通訊軟件大體上有個(gè)認(rèn)識(shí),比如消息發(fā)送,消息接受,消息監(jiān)聽(tīng),群聊,單聊,聊天室。我這邊直接拿[Gobelieve IM] 源碼來(lái)做剖析。IMService在代碼層級(jí)里起著承上啟下的作用,負(fù)責(zé)發(fā)送消息,接受消息(聊天消息,系統(tǒng)消息,控制命令消息(比如邀請(qǐng)VOIP,退群,加群)),消息在客戶端轉(zhuǎn)發(fā),消息類(lèi)型判斷和分發(fā),消息observer的增加和刪除,IMService本身會(huì)根據(jù)業(yè)務(wù)需求實(shí)現(xiàn)handlers對(duì)接到數(shù)據(jù)傳輸層(socket)。Observers是銜接IMService和UI層。如果只側(cè)重于UI層開(kāi)發(fā),重點(diǎn)是Observers,比如PeerMessageObserver是一對(duì)一聊天監(jiān)聽(tīng),GroupMessageObserver:群聊天監(jiān)聽(tīng),RoomMessageObserver:聊天室監(jiān)聽(tīng)。

在牡丹江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站建設(shè),牡丹江網(wǎng)站建設(shè)費(fèi)用合理。

下面直接上接口代碼來(lái)說(shuō),
@class IMessage;

  IMessage 模型類(lèi)的前置聲明

@protocol IMPeerMessageHandler <NSObject>
-(BOOL)handleMessage:(IMMessage*)msg uid:(int64_t)uid;
-(BOOL)handleMessageACK:(int)msgLocalID uid:(int64_t)uid;
-(BOOL)handleMessageFailure:(int)msgLocalID uid:(int64_t)uid;
@end

    一對(duì)一聊天的hanlder定義,IM有一個(gè)ACK的設(shè)計(jì),用來(lái)顯示消息是否已經(jīng)通過(guò)服務(wù)器下發(fā)到對(duì)方客戶端。具體的函數(shù),handleMessage()接收到消息的處理函數(shù)。handleMessageACK()接收到消息已讀的處理函數(shù)。 handleMessageFailure()接收到消息發(fā)送失敗的處理函數(shù)。 

@protocol IMGroupMessageHandler <NSObject>

-(BOOL)handleMessage:(IMMessage*)msg;
-(BOOL)handleMessageACK:(int)msgLocalID gid:(int64_t)gid;
-(BOOL)handleMessageFailure:(int)msgLocalID gid:(int64_t)gid;

-(BOOL)handleGroupNotification:(NSString*)notification;
@end

     群聊天的hanlder定義,接口上比單聊多一個(gè)群狀態(tài)改變的處理,還有就是單聊下發(fā)的是個(gè)人ID,群聊下發(fā)的是群聊ID,同樣的函數(shù),handleMessage()接收到消息的處理函數(shù)。handleMessageACK()接收到消息已讀的處理函數(shù)。 handleMessageFailure()接收到消息發(fā)送失敗的處理函數(shù)。handleGroupNotification(),處理群狀態(tài)改變的函數(shù),比如群名稱(chēng)改變,群成員改變,群解散等等事件。 

@protocol IMCustomerMessageHandler <NSObject>
-(BOOL)handleCustomerSupportMessage:(CustomerMessage*)msg;
-(BOOL)handleMessage:(CustomerMessage*)msg;
-(BOOL)handleMessageACK:(CustomerMessage*)msg;
-(BOOL)handleMessageFailure:(CustomerMessage*)msg;
@end

 客服聊天的handler定義。 

@protocol LoginPointObserver <NSObject>
//用戶在其他地方登陸
-(void)onLoginPoint:(LoginPoint*)lp;
@end

 多端登錄事件監(jiān)聽(tīng)。 

@protocol PeerMessageObserver <NSObject>
@optional
-(void)onPeerMessage:(IMMessage*)msg;

//服務(wù)器ack
-(void)onPeerMessageACK:(int)msgLocalID uid:(int64_t)uid;

//消息發(fā)送失敗
-(void)onPeerMessageFailure:(int)msgLocalID uid:(int64_t)uid;

//對(duì)方正在輸入
-(void)onPeerInputing:(int64_t)uid;

@end

  一對(duì)一聊天的Observer的定義,提供了對(duì)輸入狀態(tài)監(jiān)聽(tīng)的接口,用來(lái)實(shí)現(xiàn),實(shí)時(shí)獲取對(duì)方是否在編輯消息。 

@protocol GroupMessageObserver <NSObject>
@optional
-(void)onGroupMessage:(IMMessage*)msg;
-(void)onGroupMessageACK:(int)msgLocalID gid:(int64_t)gid;
-(void)onGroupMessageFailure:(int)msgLocalID gid:(int64_t)gid;

-(void)onGroupNotification:(NSString*)notification;
@end

  群聊天的Observer的定義。 

@protocol RoomMessageObserver <NSObject>
@optional
-(void)onRoomMessage:(RoomMessage*)rm;
-(void)onRoomMessageACK:(RoomMessage*)rm;
-(void)onRoomMessageFailure:(RoomMessage*)rm;

@end

  聊天室消息Observer的定義。 

@protocol RTMessageObserver <NSObject>

@optional
-(void)onRTMessage:(RTMessage*)rt;

@end

@protocol SystemMessageObserver <NSObject>
@optional
-(void)onSystemMessage:(NSString*)sm;

@end

  系統(tǒng)消息的Observer的定義。 

@protocol CustomerMessageObserver <NSObject>
@optional
-(void)onCustomerMessage:(CustomerMessage*)msg;
-(void)onCustomerSupportMessage:(CustomerMessage*)msg;

//服務(wù)器ack
-(void)onCustomerMessageACK:(CustomerMessage*)msg;
//消息發(fā)送失敗
-(void)onCustomerMessageFailure:(CustomerMessage*)msg;
@end

  客服消息的Observer的定義。 

@protocol VOIPObserver <NSObject>

-(void)onVOIPControl:(VOIPControl*)ctl;

@end

  支持整合VOIP功能的Observer的定義。 

@interface IMService : TCPConnection
@property(nonatomic, copy) NSString *deviceID;
@property(nonatomic, copy) NSString *token;
@property(nonatomic) int64_t uid;
//客服app需要設(shè)置,普通app不需要設(shè)置
@property(nonatomic) int64_t appID;

@property(nonatomic, weak)id<IMPeerMessageHandler> peerMessageHandler;//一對(duì)一聊天Handler
@property(nonatomic, weak)id<IMGroupMessageHandler> groupMessageHandler;//群聊handler
@property(nonatomic, weak)id<IMCustomerMessageHandler> customerMessageHandler;//客服handler

當(dāng)前的IMService實(shí)現(xiàn)了三個(gè)(一對(duì)一聊天,群聊,客服)handler,可以按自己需要增加新的handler類(lèi)型。消息統(tǒng)一在IMService做轉(zhuǎn)發(fā)。
根據(jù)注冊(cè)的Observer,傳遞到對(duì)該消息類(lèi)型感興趣的界面。

+(IMService*)instance;//IMService是單例的形式使用

-(BOOL)isPeerMessageSending:(int64_t)peer id:(int)msgLocalID;
-(BOOL)isGroupMessageSending:(int64_t)groupID id:(int)msgLocalID;
-(BOOL)isCustomerSupportMessageSending:(int)msgLocalID
                            customerID:(int64_t)customerID
                         customerAppID:(int64_t)customerAppID;
-(BOOL)isCustomerMessageSending:(int)msgLocalID storeID:(int64_t)storeID;

-(BOOL)sendPeerMessage:(IMMessage*)msg;
-(BOOL)sendGroupMessage:(IMMessage*)msg;
-(BOOL)sendRoomMessage:(RoomMessage*)msg;
//顧客->客服
-(BOOL)sendCustomerMessage:(CustomerMessage*)im;
//客服->顧客
-(BOOL)sendCustomerSupportMessage:(CustomerMessage*)im;
-(BOOL)sendRTMessage:(RTMessage*)msg;

-(void)enterRoom:(int64_t)roomID;
-(void)leaveRoom:(int64_t)roomID;

//正在輸入
-(void)sendInputing:(MessageInputing*)inputing;
//更新未讀的消息數(shù)目
-(void)sendUnreadCount:(int)unread;

-(void)addPeerMessageObserver:(id<PeerMessageObserver>)ob;
-(void)removePeerMessageObserver:(id<PeerMessageObserver>)ob;

-(void)addGroupMessageObserver:(id<GroupMessageObserver>)ob;
-(void)removeGroupMessageObserver:(id<GroupMessageObserver>)ob;

-(void)addLoginPointObserver:(id<LoginPointObserver>)ob;
-(void)removeLoginPointObserver:(id<LoginPointObserver>)ob;

-(void)addRoomMessageObserver:(id<RoomMessageObserver>)ob;
-(void)removeRoomMessageObserver:(id<RoomMessageObserver>)ob;

-(void)addSystemMessageObserver:(id<SystemMessageObserver>)ob;
-(void)removeSystemMessageObserver:(id<SystemMessageObserver>)ob;

-(void)addCustomerMessageObserver:(id<CustomerMessageObserver>)ob;
-(void)removeCustomerMessageObserver:(id<CustomerMessageObserver>)ob;

-(void)addRTMessageObserver:(id<RTMessageObserver>)ob;
-(void)removeRTMessageObserver:(id<RTMessageObserver>)ob;
    
-(void)pushVOIPObserver:(id<VOIPObserver>)ob;
-(void)popVOIPObserver:(id<VOIPObserver>)ob;

-(BOOL)sendVOIPControl:(VOIPControl*)ctl;

@end

  坑下挖好,慢慢補(bǔ)充,完整的代碼和DEMO可以到[Gobelieve IM]查看。

 

[1]: http://developer.gobelieve.io/

文章標(biāo)題:商業(yè)化IM客戶端接口設(shè)計(jì)分析
分享網(wǎng)址:http://chinadenli.net/article38/ppcdpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化品牌網(wǎng)站設(shè)計(jì)、小程序開(kāi)發(fā)網(wǎng)站建設(shè)、Google網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
国产人妻熟女高跟丝袜| 少妇淫真视频一区二区| 亚洲欧洲一区二区中文字幕| 色婷婷视频国产一区视频| 国产亚洲精品岁国产微拍精品| 国产无摭挡又爽又色又刺激| 亚洲黄香蕉视频免费看| 欧美av人人妻av人人爽蜜桃| 免费在线观看激情小视频| 黑色丝袜脚足国产一区二区| 深夜视频成人在线观看| 白白操白白在线免费观看| 国产精品熟女在线视频| 日韩一区二区三区有码| 久久热这里只有精品视频 | 大胆裸体写真一区二区| 欧美一区二区三区高潮菊竹| 老外那个很粗大做起来很爽| 亚洲精品福利入口在线| 视频在线观看色一区二区| 国产内射一级一片内射高清视频| 精品人妻一区二区四区| 日韩欧美一区二区久久婷婷 | 在线观看免费午夜福利| 日韩人妻精品免费一区二区三区| 日韩在线视频精品视频| 97人妻人人揉人人躁人人| 日本午夜福利视频免费观看| 国产又大又猛又粗又长又爽| 国产亚洲系列91精品| 亚洲一区二区三区在线免费| 九九热这里只有精品视频| 日本中文字幕在线精品| 粉嫩一区二区三区粉嫩视频| 五月天丁香婷婷狠狠爱| 久热香蕉精品视频在线播放| 国产亚洲欧美自拍中文自拍| 护士又紧又深又湿又爽的视频| 日韩一区二区三区有码| 中文字幕日韩欧美理伦片| 亚洲中文字幕日韩在线|