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

pikacode發表於2016-12-16

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

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

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

line 0:準備工作


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) {
}];複製程式碼

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 中新增了 的類,可以監聽該方法
  • 當 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

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 的各種基本操作就完了,是不是

很簡單?

相關文章