20 行代码极速为 App 加上聊天功能
来源:互联网 发布:国家统计局数据下载 编辑:程序博客网 时间:2024/05/21 11:28
现在很多 App 都需要集成 IM 功能,今天就为大家分享一下集成 IM 基本功能的步骤。本文内容以 JMessage 为例。
极光 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:填入对象需要实现
- 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<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
line 17:删除单聊会话
BOOL success = [JMSGConversation deleteSingleConversationWithUsername:username];
- Related APIs:
- 删除单聊跨应用会话
- 删除群聊会话
line 18:批量获取用户详情
[JMSGUser userInfoArrayWithUsernameArray:nameArr completionHandler:^(id resultObject, NSError *error) {}];
- Parameters:
- nameArray:NSArray
line 19:创建群组及相关操作
[JMSGGroup createGroupWithName:name desc:desc memberArray:members completionHandler:^(id resultObject, NSError *error) {}];
- Parameters:
- name:群名
- desc:群组描述
- memberArray:成员列表,NSArray
line 20:退出登录
[JMSGUser logout:^(id resultObject, NSError *error) {}];
至此一个 IM 的各种基本操作就完了,是不是
很简单?
作者:pikacode - 极光
原文:20 行代码极速为 App 加上聊天功能
知乎专栏:极光日报
0 0
- 20 行代码极速为 App 加上聊天功能
- 给blog加上在线聊天功能
- 5分钟为你的APP加入聊天功能【程序猿的福利】
- 安卓开发——为自己的app快速集成聊天功能
- 为jive论坛加上投票功能
- 为jive论坛加上投票功能
- 为SQLPLUS加上Linux命令行的功能
- 聊天类 APP 功能测试总结
- 聊天类APP功能测试总结
- 为网页加上ICON图标的代码
- 如何为项目加上代码版本号
- 如何为项目加上代码版本号
- 让你的APP轻松加上扫描二维码功能
- 通过正则表达式,为页面加上验证功能.
- 为hadoop 0.20.2加上hadoop 0.21的backupnode功能
- 为VirtualBox虚拟的Ubuntu加上远程SSH功能
- 为逐浪CMS加上腾讯微博一键转播功能
- 为我们的java软件加上系统热键功能。
- cocos2dx3.12 CCTableView优化和使用
- WGAN介绍
- php实现随机中奖(转盘抽奖)
- BZOJ P1566[NOI2009]管道取珠
- LocalBroadcastManager源码分析
- 20 行代码极速为 App 加上聊天功能
- Ambari-server源码分析:核心类agent.rest.AgentResource
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- SpringMvc+Mybatis+Redis框架
- Nginx源码剖析-模块以及部分初始化
- Java 并发编程:volatile的使用及其原理
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- 使用Maven对SSM整合时,XML文件没有打包到项目的war文件中
- Xcode配置SVN详细步骤