融雲IM乾貨丨在SwiftUI中整合IMKit,整合IMKit的基本步驟有哪些

融云RongCloud發表於2024-12-02

建立專案:
開啟Xcode並建立一個新的Swift專案。RongCloudIM/IMKit支援Swift,確保你的專案設定為使用Swift語言。

安裝IMKit:
你可以透過CocoaPods來安裝iOS版本的IMKit(含UI SDK)。在Podfile中新增以下內容:

ruby
pod 'RongCloudIM/IMKit', '~> x.y.z'
然後,在終端中執行以下命令:

pod repo update
pod install
完成後,CocoaPods會在工程根目錄下生成一個xcworkspace檔案,透過Xcode開啟該檔案即可載入工程。

初始化IMKit:
在你的應用中整合和執行Rongcloud IMKit(含UI SDK),需要首先引入RongIMKit,然後透過AppDelegate初始化RCIM。

使用UIViewControllerRepresentable:
由於IMKit中的RCConversationListViewController和RCConversationViewController兩個頁面強依賴UINavigationController,並且內部使用的是frame佈局,直接放入SwiftUI的View中會導致安全區域失效,frame計算錯誤。因此,需要使用UIViewControllerRepresentable將UIKit的頁面轉換為SwiftUI頁面。以下是轉換的一個示例:

swift
struct ChatListView: UIViewControllerRepresentable {

func makeUIViewController(context: Context) -> UIViewController {
    let displayConversationTypeArray = [
        RCConversationType.ConversationType_PRIVATE.rawValue,
        RCConversationType.ConversationType_GROUP.rawValue,
    ]
    let collectionConversationType = [
        RCConversationType.ConversationType_SYSTEM.rawValue
    ]
    guard let conversationList = RCDChatsViewController(
        displayConversationTypes: displayConversationTypeArray,
        collectionConversationType: collectionConversationType
    ) else {
        return UIViewController()
    }
    return UINavigationController(rootViewController: conversationList);
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
}

}
然後在SwiftUI的ContentView中使用這個ChatListView,並注意使用ignoresSafeArea忽略安全區域:

swift
struct ContentView: View {

var body: some View {
    ChatListView()
        .ignoresSafeArea()
}

}

透過上述步驟,你可以在SwiftUI應用中整合IMKit,實現即時通訊功能。

相關文章