进阶用法
进阶用法
以下是进阶用法的部分示例。会话列表页面、消息列表页和联系人列表均可单独使用。
初始化
与 快速开始中的初始化 相比,本节增加了 ChatOptions 的参数,包括 SDK 中是否打印日志、是否自动登录以及是否默认使用用户属性的开关配置,详见 Demo 文档。
let error = ChatUIKitClient.shared.setup(option: ChatOptions(appKey: appKey))
登录
使用当前用户对象符合 ChatUserProfileProtocol 协议的用户信息登录 EaseChatUIKit。
在环信控制台上创建用户,将用户 ID 传入以下代码中的 userId。
提示
若你已集成了 IM SDK,SDK 的所有用户 ID 均可用于登录 EaseChatUIKit。
public final class YourAppUser: NSObject, ChatUserProfileProtocol {
public func toJsonObject() -> Dictionary<String, Any>? {
["ease_chat_uikit_user_info":["nickname":self.nickname,"avatarURL":self.avatarURL,"userId":self.id]]
}
public var userId: String = <#T##String#>
public var nickname: String = "Jack"
public var remark: String = "Jack 1"
public var avatarURL: String = "https://accktvpic.oss-cn-beijing.aliyuncs.com/pic/sample_avatar/sample_avatar_1.png"
}
ChatUIKitClient.shared.login(user: YourAppUser(), token: ExampleRequiredConfig.chatToken) { error in
}
会话列表页面
若完全基于 GitHub 或 Gitee 单群聊 UIKit 示例项目进行开发,则无需额外创建页面或配置页面跳转。
若仅需在自己的业务模块中使用部分功能模块,例如,只使用会话列表页面与聊天页面,不需要通讯录页面,则创建会话列表页面,完成跳转。
- 创建会话列表页面
let vc = EaseChatUIKit.ComponentsRegister.shared.ConversationsController.init()
- 监听会话列表页面事件
vc.viewModel?.registerEventsListener(listener: self)
通讯录页面
若完全基于 GitHub 或 Gitee 单群聊 UIKit 示例项目进行开发,则无需额外创建页面或配置页面跳转。
若仅需在自己的业务模块中使用部分功能模块,例如,只使用通讯录页面与聊天页面,不需要会话列表页面,则创建通讯录页面,完成跳转。
- 创建通讯录页面
继承单群聊 UIKit 提供的通讯录页面类注册后的自定义类可以调用 ViewModel 的 ContactViewController().viewModel.registerEventsListener 方法监听相关事件。
let vc = EaseChatUIKit.ComponentsRegister.shared.ContactsController.init(headerStyle: .contact)
- 监听联系人列表页面事件
vc.viewModel?.registerEventsListener(listener: self)
初始化聊天页面
聊天页面中大部分消息处理以及页面处理逻辑均可覆盖(override),包括 ViewModel。
// 在环信控制台中创建一个新用户,将用户 ID 传入下面构造方法参数中,跳转到聊天页面即可。
let vc = ComponentsRegister.shared.MessageViewController.init(conversationId: <#刚创建用户的id#>, chatType: .chat)
// 继承注册后的自定义类还可以调用 ViewModel 的 registerEventsListener 方法监听聊天消息相关事件,例如消息接收、长按、点击等。
//或者 push 或者 present 都可
vc.modalPresentationStyle = .fullScreen
ControllerStack.toDestination(vc: vc)
监听用户及与服务器的连接事件
你可以调用 registerUserStateListener 方法监听 EaseChatUIKit 中用户以及与服务器之间的连接状态变更的相关事件和错误。
ChatUIKitClient.shared.registerUserStateListener(self)
不使用该监听时,可调用 `unregisterUserStateListener` 方法移除:
ChatUIKitClient.shared.unregisterUserStateListener(self)
## 更多
更多进阶用法,请参考 [GitHub](https://github.com/easemob/easemob-demo-ios) 或 [Gitee](https://gitee.com/easemob-code/easemob-demo-ios) 中的 Demo 源码。
