20 行代码极速为 App 加上聊天功能
2017-03-13 11:12
597 查看
现在很多 App 都需要集成 IM 功能,今天就为大家分享一下集成 IM 基本功能的步骤。本文内容以 JMessage 为例。
极光 IM ( JMessage ) = 极光推送 ( JPush ) + IM,本篇只论述其中的 IM 部分,为大家快速集成 IM 功能提供一个简明的范例。
我们先来看一下 IM 的基本功能与本文内容的对应关系:
集成 SDK
JMessage 核心头文件。这是唯一需要导入到你的项目里的头文件,它引用了内部需要用到的头文件。
用于监听各种全局事件
建议写在 line 3 之前
Parameters:
delegate:填入对象需要实现 <JMessageDelegate>
conversation:nil 监听所有通知,非 nil 监听指定会话
建议写在
Parameters:
launchOptions:启动函数的参数 launchingOption
appKey:获取方式 line 0 - 集成 SDK
channel:应用的渠道名
isProduction:是否为生产模式
category:iOS8 新增通知快捷按钮参数
Parameters:
username:用户名
password:密码
handler:error 为 nil 时调用成功(下均同)
会话是整个 IM 的核心,所有的消息行为都基于「会话」
该会话不存在会返回新会话,存在会返回已有会话
Parameters:
handler:正常返回时 resultObject 为 JMSGConversation 会话对象
((JMSGConversation*)resultObject).target:会话的对方目标:
用户对象 JMSGUser
群组对象 JMSGGroup
Related APIs:
创建单聊跨应用会话
创建群聊会话
转型 line 6 - handler 中的
Related APIs:
发送图片消息
发送语音消息
发送文件消息
发送地理位置消息
在 line 2 中添加了 <JMessageDelegate> 的类,可以监听该方法
当 App 收到(文本、图片等各类)消息时该方法被调用
根据
转型
Related APIs:
图片内容
声音内容
文件内容
利用 line 6 中的
单聊群聊均可
Parameters:
返回 NSArray<JMSGMessage* >
offset:起点。nil 从最新一条开始,n 从最新第 n 条往历史追查
limit:数量。nil 表全部
Related APIs:
清零群聊
批量获取所有会话列表
根据会话类型判断是单聊还是群聊
Parameters:
resultObject:NSArray<JMSGConversation*>
Related APIs:
删除单聊跨应用会话
删除群聊会话
Parameters:
nameArray:NSArray<NSString*>
resultObject:NSArray<JMSGUser*>
Related APIs:
获取本用户详情
修改本用户详情
修改本用户密码
Parameters:
name:群名
desc:群组描述
memberArray:成员列表,NSArray<NSString*>
resultObject:群组对象 JMSGGroup
Related APIs:
获取我的群组列表
获取群组成员列表
添加成员
删除成员
退群
获取群组详情
修改群组详情
至此一个 IM 的各种基本操作就完了,是不是
极光 IM ( JMessage ) = 极光推送 ( JPush ) + IM,本篇只论述其中的 IM 部分,为大家快速集成 IM 功能提供一个简明的范例。
我们先来看一下 IM 的基本功能与本文内容的对应关系:
line 0:准备工作
下载 SDK集成 SDK
line 1:引入头文件
#import <JMessage/JMessage.h>
JMessage 核心头文件。这是唯一需要导入到你的项目里的头文件,它引用了内部需要用到的头文件。
line 2:开启事件监听
[JMessage addDelegate:self withConversation:nil];
用于监听各种全局事件
建议写在 line 3 之前
Parameters:
delegate:填入对象需要实现 <JMessageDelegate>
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 中添加了 <JMessageDelegate> 的类,可以监听该方法
当 App 收到(文本、图片等各类)消息时该方法被调用
根据
message.contentType判断消息类型
转型
message.content为文本内容并获取文本
text以展示 UI
Related APIs:
图片内容
声音内容
文件内容
line 13:获取历史消息
NSArray *messages = [(JMSGConversation*)resultObject messageArrayFromNewestWithOffset:nil limit:nil];
利用 line 6 中的
resultObject转型后获取
单聊群聊均可
Parameters:
返回 NSArray<JMSGMessage* >
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<JMSGConversation*>
line 17:删除单聊会话
BOOL success = [JMSGConversation deleteSingleConversationWithUsername:username];
Related APIs:
删除单聊跨应用会话
删除群聊会话
line 18:批量获取用户详情
[JMSGUser userInfoArrayWithUsernameArray:nameArr completionHandler:^(id resultObject, NSError *error) { }];
Parameters:
nameArray:NSArray<NSString*>
resultObject:NSArray<JMSGUser*>
Related APIs:
获取本用户详情
修改本用户详情
修改本用户密码
line 19:创建群组及相关操作
[JMSGGroup createGroupWithName:name desc:desc memberArray:members completionHandler:^(id resultObject, NSError *error) { }];
Parameters:
name:群名
desc:群组描述
memberArray:成员列表,NSArray<NSString*>
resultObject:群组对象 JMSGGroup
Related APIs:
获取我的群组列表
获取群组成员列表
添加成员
删除成员
退群
获取群组详情
修改群组详情
line 20:退出登录
[JMSGUser logout:^(id resultObject, NSError *error) { }];
至此一个 IM 的各种基本操作就完了,是不是
很简单?
相关文章推荐
- 20 行代码极速为 App 加上聊天功能
- 20 行代码极速为 App 加上聊天功能
- 给blog加上运行代码功能
- TCP/UDP实现相同聊天功能的代码
- 由于时间关系,只能写部分代码,其他功能到时候加上
- 一个功能,两个平台,三种语言 -(iOS,Swift,Android)App代码实现对比篇
- ios应用增加给appstore评分和进入app安装页面代码功能
- 给blog加上在线聊天功能
- Android 给App加上屏保功能 类似广告功能的实现。
- Android 通过 XMPP 实现聊天功能,App Engine Assisted Group Chat (开源)
- 给django admin加上在线编辑运行python代码的功能
- AndroidStudio开启代码混淆Progurad功能,防止你的app被反编译
- javascript Discuz代码中的msn聊天小功能
- 给phped加上“代码格式化”功能
- 开发人员非常有用的Java功能代码(11-20)
- 想给你的APP加上用户反馈功能吗?A…
- 发一份魔兽改键工具的代码,vc6.0环境,带聊天模式识别功能
- (android 功能代码) android app集成支付宝
- Android 通过 XMPP 实现聊天功能,App Engine Assisted Group Chat (开源)
- iOS appstore评分和进入app安装页面代码=打电话、发短信、发邮件功能开发,