4、RainbowChat/微觅(MobileIMSDK) iO

2019-03-25  本文已影响0人  封楼

4、RainbowChat/微觅(MobileIMSDK) iOS 端

MobileIMSDK 所支持的全部3种即时通讯消息走向分别是:

(1) Client to Client (C2C):即由某客户端主动发起,接收者是另一客户端;

(2) Client to Server (C2S):即由某客户端主动发起,接收者是服务端;

(3) Server to Client (S2C):即由服务端主动发起,接收者是某客户端。

先说说RainbowChat/微觅:

RainbowChat是一套基于MobileIMSDK的移动端IM系统。

说了这么多 可能大家有点乱,我总结一下:

web 端IM框架:MobileIMSDK-web(MobileIMSDK-web基于socket.io)

移动端IM框架:MobileIMSDK(基于UDP协议)

移动端音视频:RainbowAV


无论RainbowChat 还是我二次开发的微觅 都是基与MobileIMSDK


MobileIMSDK 到底是什么呢?

整套MobileIMSDK框架由以下5部分组成:

Android客户端SDK:用于Android版即时通讯客户端,支持Android 2.3及以上,查看API文档

iOS客户端SDK:用于开发iOS版即时通讯客户端,支持iOS 8.0及以上,查看API文档

Java客户端SDK:用于开发跨平台的PC端即时通讯客户端,支持Java 1.6及以上,查看API文档

服务端SDK(Mina版):基于Mina框架,用于开发即时通讯服务端,支持Java 1.7及以上版本,查看API文档

服务端SDK(Netty版):基于Netty框架,用于开发即时通讯服务端,支持Java 1.7及以上版本,查看API文档 。


纯技术角度讲:它是一整套基于UDP协议的客户端A->服务端->客户端B的3方全向即时通讯算法实现,超轻量级、高度提炼。

应用层角度讲:它是一组包含了Android客户端库、iOS客户端库、Java跨平台客户端库和服务端库的即时通讯SDK框架集。

更通俗一点讲:它是一个专为移动设备设计的跨设备、跨平台、跨网络的即时通讯开发框架,可用于(包含但不限于)开发聊天APP、企业OA、消息推送应用等。

有过即时通讯应用开发经验的人都有体会,即时通讯应用开发的难点不仅在于应用层的业务逻辑实现,更重的要是需要稳定、可靠、对应用层友好的即时通讯核心层框架,否则应用层的复杂逻辑再掺杂进即时通讯通信技术本身的复杂性(在无线网络普及的时代,问题更为突出),会让经验不足的开发团队陷入混乱。MobileIMSDK的价值在于:让开发者专注于应用逻辑的开发,底层复杂的即时通讯算法交由SDK开发人员,从而解偶即时通讯应用开发的复杂性。

解决了哪些问题?

UDP协议实现,更符合现今的复杂移动端网络通信环境;

完善的QoS消息送达保证机制,解决了UDP通信时的消息黑洞问题;

解决了高延迟网络环境下的2G、3G、4G、WiFi以及传统宽带的多端、多网混合通信可靠性和稳定性问题;

拥有通信自动治愈算法,无论无线信号多么恶劣,只要恢复通信,将自动实现连接自我修复;

预定义多种耗电模式,在应对不同通信场景的情况下,自主决定电量、网络流量的消耗等;

易拆装的协议封装,可针对不同应用场景,选择适合的协议压缩方案;

历经多个版本的锤炼,API高度封装,在解决应用层与即时通讯层代码偶合的同时,能适应更多应用场景。

有关MobileIMSDK的更多介绍,请见《即时通讯框架MobileIMSDK:快速入门》。

技术:

【1】基于UDP实现, 更好地适应移动端弱网络;

【2】即时通讯核心层基于MobileIMSDK 工程

【3】支持完整的消息送达保证(QoS)机制,使用UDP协议依然能保证送达率,理论丢包率约为0.0001%;

【4】底层UDP协议的无连接特性保证在高延迟、跨洲际、不同网络制式的恶恶劣环境中能稳定、可靠地运行;

【5】基于 MobileIMSDK 工程的自有协议,未来的流量压缩对于APP端的节电控制和流量控制、服务端的网络吞吐等都有完全的控制能力;

【6】完善的网络状况自动检测、断网重连等服务自动治愈能力;

【7】核心算法和实现均为自主原创,保证了技术的持续改进、升级、扩展;

功能简介

1、支持文本消息、语音留言消息、图片消息;

2、支持一对一陌生人聊天模式;

3、支持一对一正式好友聊天模式;

4、支持多对多世界频道群聊模式;

5、全功能实时语音聊天(完全自主开发,现在就可体验);

6、全功能实时音视频聊天(完全自主开发,现在就可体验);

7、完整的礼物发送和积分管理子系统;

8、支持个人相册、个人语音介绍;

9、支持好友聊天模式、陌生人聊天模式;

10、完整的历史消息离线存取机制;

11、内置一完整“商城”模块,目前仅用于演示产品的完整性;

12、[v4.3新增] 全功能群聊系列功能(仅限专业版);

13、[v4.3新增] 支持好友聊天、群聊天中的大文件消息,支持离线文件、断点续传等 (仅限专业版);

14、[v4.4新增] 短视频消息功能(仅限专业版);

15、其它未提及的功能和特性请自行下载体验。

界面效果:


专业版:

iOS端接入MobileIMSDK

第1步:基本配置:

// 设置AppKey

[ConfigEntity registerWithAppKey:@"5418023dfd98c579b6001741"];

// 设置服务器ip和服务器端口

[ConfigEntity setServerIp:@"im.zhangfan.online"];

[ConfigEntity setServerPort:7901];

第2步:回调设置

//框架基本事件回调实现类:

#import "ChatBaseEventImpl.h"

#import "AppDelegate.h"

#import "MainViewController.h"

@implementationChatBaseEventImpl

// 登陆/掉线重连结果通知

- (void) onLoginMessage:(int) dwUserId withErrorCode:(int)dwErrorCode

{

    if(dwErrorCode == 0)

        NSLog(@"登录成功,当前分配的user_id=%d!", dwUserId);

    else

        NSLog(@"登录失败,错误代码:%d", dwErrorCode);

}

// 掉线事件通知

- (void) onLinkCloseMessage:(int)dwErrorCode

{

    NSLog(@"网络连断开了,error:%d", dwErrorCode);

}

@end

//实时消息事件回调实现类:

#import "ChatTransDataEventImpl.h"

#import "Toast+UIView.h"

#import "AppDelegate.h"

#import "MainViewController.h"

@implementationChatTransDataEventImpl

- (void) onTransBuffer:(NSString*)fingerPrintOfProtocal withUserId:(int)dwUserid andContent:(NSString*)dataContent

{

    NSLog(@"收到来自用户%d的消息:%@", dwUserid, dataContent);

}

- (void) onErrorResponse:(int)errorCode withErrorMsg:(NSString*)errorMsg

{

    NSLog(@"收到服务端错误消息,errorCode=%d, errorMsg=%@", errorCode, errorMsg);

}

@end

//QoS相关事件回调实现类:

#import "MessageQoSEventImpl.h"

#import "AppDelegate.h"

#import "MainViewController.h"

@implementationMessageQoSEventImpl

- (void) messagesLost:(NSArray*)lostMessages

{

    NSLog(@"收到系统的未实时送达事件通知,当前共有%li个包QoS保证机制结束,判定为【无法实时送达】!"

        , (unsigned long)[lostMessages count]);

}

- (void) messagesBeReceived:(NSString*)theFingerPrint

{

    if(theFingerPrint != nil)

    {

        NSLog(@"收到对方已收到消息事件的通知,fp=%@", theFingerPrint);

    }

}

@end

* 设置事件回调通知监听:

// 设置事件回调

[ClientCoreSDK sharedInstance].chatBaseEvent = [[ChatBaseEventImpl alloc] init];

[ClientCoreSDK sharedInstance].chatTransDataEvent = [[ChatTransDataEventImpl alloc] init];

[ClientCoreSDK sharedInstance].messageQoSEvent = [[MessageQoSEventImpl alloc] init];

第3步:登陆请求

intcode = [[LocalUDPDataSender sharedInstance] sendLogin:用户名 withPassword:密码];

if(code == COMMON_CODE_OK)

    NSLog(@"提示"withContent:@"登陆请求已发出。。。");

else

    NSLog([NSStringstringWithFormat:@"登陆请求发送失败,错误码:%d", code]);

第4步: 发送消息

int code = [[LocalUDPDataSender sharedInstance] sendCommonDataWithStr:@"这是一条测试信息..."toUserId:对方的userId qos:YESfp:nil];

if(code == COMMON_CODE_OK)

    NSLog(@"提示"withContent:@"您的消息已成功发出。。。");

else

    NSLog([NSStringstringWithFormat:@"您的消息发送失败,错误码:%d", code]);

从 Github 得到的核心库工程和Demo演示工程

是不是很有成就感了?那么我们来说说MobileIMSDK吧

本文引用与即时通讯网

纯技术角度讲:它是一整套基于UDP协议的客户端A、服务端、客户端B的3方全向即时通讯算法实现,超轻量级、高度提炼。

应用层角度讲:它是一组包含了Android客户端库、iOS客户端库、Java跨平台客户端库和服务端库的即时通讯SDK框架集。

更通俗一点讲:它是一个专为移动设备设计的跨设备、跨平台、跨网络的即时通讯开发框架,可用于(包含但不限于)开发聊天APP、企业OA、消息推送应用等。

纯技术角度讲:它是一整套基于UDP协议的客户端A、服务端、客户端B的3方全向即时通讯算法实现,超轻量级、高度提炼。

应用层角度讲:它是一组包含了Android客户端库、iOS客户端库、Java跨平台客户端库和服务端库的即时通讯SDK框架集。

更通俗一点讲:它是一个专为移动设备设计的跨设备、跨平台、跨网络的即时通讯开发框架,可用于(包含但不限于)开发聊天APP、企业OA、消息推送应用等。

返回 🔙文章论题首页

整套MobileIMSDK框架由以下5部分组成:

Android客户端SDK:用于Android版即时通讯客户端,支持Android 2.3及以上,查看API文档

iOS客户端SDK:用于开发iOS版即时通讯客户端,支持iOS 8.0及以上,查看API文档

Java客户端SDK:用于开发跨平台的PC端即时通讯客户端,支持Java 1.6及以上,查看API文档

服务端SDK(Mina版):基于Mina框架,用于开发即时通讯服务端,支持Java 1.7及以上版本,查看API文档

服务端SDK(Netty版):基于Netty框架,用于开发即时通讯服务端,支持Java 1.7及以上版本,查看API文档 

上一篇 下一篇

猜你喜欢

热点阅读