现在很多 App 都需要集成 IM 功能,今天就为大家分享一下集成 IM 基本功能的步骤。本文内容以 JMessage 为例。极光 IM ( JMessage ) = 极光推送 ( JPush ) + IM,本篇只论述其中的 IM 部分,为大家快速集成 IM 功能提供一个简明的范例。

我们先来看一下 IM 的基本功能与本文内容的对应关系:

line 0:准备工作

下载 SDK

集成 SDK

line 1:引入头文件

#import

JMessage 核心头文件。这是唯一需要导入到你的项目里的头文件,它引用了内部需要用到的头文件。

line 2:开启事件监听

[JMessage addDelegate:self withConversation:nil];

用于监听各种全局事件

建议写在 line 3 之前

Parameters:

delegate:填入对象需要实现

conversation:nil 监听所有通知,非 nil 监听指定会话

line 3:启动 SDK

[JMessage setupJMessage:launchOptions

appKey:@"your appkey"

channel:@"channel name"

apsForProduction:NO

category:nil];

建议写在 application:didFinishLaunchingWithOptions:

Parameters:

launchOptions:启动函数的参数 launchingOption

appKey:获取方式 line 0 - 集成 SDK

channel:应用的渠道名

isProduction:是否为生产模式

category:iOS8 新增通知快捷按钮参数

line 4:注册新用户

[JMSGUser registerWithUsername:@"username"

password:@"password"

completionHandler:^(id resultObject, NSError *error) {

}];

Parameters:

username:用户名

password:密码

handler:error 为 nil 时调用成功(下均同)

line 5:登录

[JMSGUser loginWithUsername:@"username"

password:@"password"

completionHandler:^(id resultObject, NSError *error) {

}];

line 6:创建单聊会话

[JMSGConversation createSingleConversationWithUsername:@"username"

completionHandler:^(id resultObject, NSError *error) {

}];

会话是整个 IM 的核心,所有的消息行为都基于「会话」

该会话不存在会返回新会话,存在会返回已有会话

Parameters:

handler:正常返回时 resultObject 为 JMSGConversation 会话对象

((JMSGConversation*)resultObject).target:会话的对方目标:

用户对象 JMSGUser

群组对象 JMSGGroup

Related APIs:

创建单聊跨应用会话

创建群聊会话

line 7:发送文本消息

[(JMSGConversation*)resultObject sendTextMessage:@"text"];

转型 line 6 - handler 中的 resultObject,并发送文本消息

Related APIs:

发送图片消息

发送语音消息

发送文件消息

发送地理位置消息

line 8~12:接收文本消息

- (void)onReceiveMessage:(JMSGMessage *)message error:(NSError *)error{

if (message.content == kJMSGContentTypeText) {

NSString *text = ((JMSGTextContent *)message.content).text;

}

}

在 line 2 中添加了 的类,可以监听该方法

当 App 收到(文本、图片等各类)消息时该方法被调用

根据 message.contentType 判断消息类型

转型 message.content 为文本内容并获取文本 text 以展示 UI

Related APIs:

图片内容

声音内容

文件内容

line 13:获取历史消息

NSArray *messages = [(JMSGConversation*)resultObject messageArrayFromNewestWithOffset:nil limit:nil];

利用 line 6 中的 resultObject 转型后获取

单聊群聊均可

Parameters:

返回 NSArray

offset:起点。nil 从最新一条开始,n 从最新第 n 条往历史追查

limit:数量。nil 表全部

line 14~15:清零单聊未读消息数

JMSGConversation *conversation = [JMSGConversation singleConversationWithUsername:username];

[conversation clearUnreadCount];

Related APIs:

清零群聊

line 16:获取会话列表

[JMSGConversation allConversations:^(id resultObject, NSError *error) {

}];

批量获取所有会话列表

根据会话类型判断是单聊还是群聊

Parameters:

resultObject:NSArray

line 17:删除单聊会话

BOOL success = [JMSGConversation deleteSingleConversationWithUsername:username];

Related APIs:

删除单聊跨应用会话

删除群聊会话

line 18:批量获取用户详情

[JMSGUser userInfoArrayWithUsernameArray:nameArr completionHandler:^(id resultObject, NSError *error) {

}];

Parameters:

nameArray:NSArray

resultObject:NSArray

Related APIs:

获取本用户详情

修改本用户详情

修改本用户密码

line 19:创建群组及相关操作

[JMSGGroup createGroupWithName:name desc:desc memberArray:members completionHandler:^(id resultObject, NSError *error) {

}];

Parameters:

name:群名

desc:群组描述

memberArray:成员列表,NSArray

resultObject:群组对象 JMSGGroup

Related APIs:

获取我的群组列表

获取群组成员列表

添加成员

删除成员

退群

获取群组详情

修改群组详情

line 20:退出登录

[JMSGUser logout:^(id resultObject, NSError *error) {

}];

至此一个 IM 的各种基本操作就完了,是不是

很简单?

作者: pikacode - 极光( jpush 为极光团队账号)

原文:20 行代码极速为 App 加上聊天功能

知乎专栏:极光日报

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。