20 行代碼極速為 App 加上聊天功能


現在很多 App 都需要集成 IM 功能,今天就為大家分享一下集成 IM 基本功能的步驟。本文內容以 JMessage 為例。
極光 IM ( JMessage ) = 極光推送 ( JPush ) + IM,本篇只論述其中的 IM 部分,為大家快速集成 IM 功能提供一個簡明的范例。

我們先來看一下 IM 的基本功能與本文內容的對應關系:

line 0:准備工作


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) { }];

line 7:發送文本消息


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

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];

line 16:獲取會話列表


[JMSGConversation allConversations:^(id resultObject, NSError *error) { }];
  • 批量獲取所有會話列表
  • 根據會話類型判斷是單聊還是群聊
  • Parameters:
    • resultObject:NSArray<JMSGConversation*>

line 17:刪除單聊會話


BOOL success = [JMSGConversation deleteSingleConversationWithUsername:username];

line 18:批量獲取用戶詳情


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

line 19:創建群組及相關操作


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

line 20:退出登錄


[JMSGUser logout:^(id resultObject, NSError *error) { }];
至此一個 IM 的各種基本操作就完了,是不是

很簡單?


作者: pikacode - 極光( jpush 為極光團隊賬號)

原文:20 行代碼極速為 App 加上聊天功能

知乎專欄:極光日報


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM