创建项目:
打开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,实现即时通讯功能。


融云RongCloud
82 声望1.2k 粉丝

因为专注,所以专业