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

    xiaoxiao2021-03-25  68

    现在很多 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:启动函数的参数 launchingOptionappKey:获取方式 line 0 - 集成 SDKchannel:应用的渠道名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群组对象 JMSGGroupRelated 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 以展示 UIRelated 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 加上聊天功能

    知乎专栏:极光日报

    转载请注明原文地址: https://ju.6miu.com/read-39273.html

    最新回复(0)