建立專案:
開啟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,實現即時通訊功能。