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