使用Swift快速整合環信IM iOS SDK並實現單聊

環信發表於2023-04-27

本文介紹如何使用swift快速整合環信即時通訊 IM iOS SDK 實現單聊。

前提條件

• Xcode (推薦最新版本)。
• 安裝 iOS 10.0 或更高版本的 iOS 模擬器或 Apple 裝置。
• CocoaPods 1.10.1 或更高版本。
• 有效的環信即時通訊 IM 開發者賬號(註冊環信賬號)和 App Key,見 環信即時通訊雲管理後臺
• 如果你的網路環境部署了防火牆,請聯絡環信技術支援設定白名單。

整合方式

使用CocoaPods來新增環信SDK,具體步驟如下:

platform :ios, '10.0'
use_frameworks!

target 'YourTarget' do
pod 'HyphenateChat', '~> 4.0.2'
end

然後在終端中執行pod install,即可將環信SDK新增到專案中。

因為環信sdk是OC的程式碼,所以需要建立橋接檔案(Bridging Header)來讓Swift可以呼叫Objective-C的程式碼和庫。下面是建立橋接檔案的步驟:

1. 建立橋接檔案

在Xcode專案中,選擇File -> New -> File...,在彈出的對話方塊中選擇iOS -> Source -> Header File,然後給該檔案起一個名字,例如YourProjectName-Bridging-Header.h

2.配置橋接檔案選項

在橋接檔案的屬性中,設定Objective-C Bridging Header選項。具體操作如下:
• 選中專案,在Xcode選單中選擇Build Settings
• 在搜尋框中輸入bridging header,找到Objective-C bridges Header選項
• 雙擊該選項,然後在彈出的對話方塊中輸入橋接檔案的路徑,例如$(SRCROOT)/YourProjectName/YourProjectName-Bridging-Header.h

3.匯入Objective-C標頭檔案

// YourProjectName-Bridging-Header.h
#import <HyphenateChat/HyphenateChat.h>

4.初始化環信SDK

在AppDelegate.swift檔案中的application(_:didFinishLaunchingWithOptions:)方法中初始化環信SDK。以下是初始化程式碼示例:

      let options = EMOptions(appkey: "yourappkey#demo")
let error = EMClient.shared().initializeSDK(with: options)
     if error == nil {
            //初始化成功
        } else {
            //初始化失敗
        }

5.登入環信伺服器

註冊服務端賬號:http://docs-im-beta.easemob.com/document/server-side/account_system.html

EMClient.shared().login(withUsername: "yourUsername", password: "yourPassword") { (aUserName, aError) in
            if aError != nil {
                //登入失敗處理
                print("\(aUserName) login fail")
            }else {
                //登入成功處理
                print("\(aUserName) login success")
            }
        }

6.傳送訊息

初始化聊天頁面檔案:http://docs-im-beta.easemob.com/document/ios/quickstart.html#_4-

let chatText = "Hello, World!"
let message = EMChatMessage(conversationID: "yourConversationID", from: "yourFrom", to: "yourTo", body: EMTextMessageBody(text: chatText), ext: ["yourKey": "yourValue"])
message.chatType = EMChatTypeChat // 設定為單聊訊息
EMClient.shared().chatManager?.send(message, progress: nil) { (aMessage, aError) in
    if let error = aError {
        // 傳送失敗處理
    } else {
        // 傳送成功處理
    }
}

至此,即時通訊的基本功能已經整合完,如果您在整合中遇到問題可以隨時聯絡環信技術支援或IMGeek社群提問。

SDK地址:https://www.easemob.com/download/im
IMGeek社群:https://www.imgeek.net/

相關文章