Appearance
Are you an LLM? You can read better optimized documentation at /channels/app/embed.md for this page in Markdown format
把聊天嵌进自己的页面
HecongChatView 是 SDK 最底层的视图:容器、标题栏、生命周期都由你安排,适合对话只占屏幕一部分、旁边还有别的内容的场景。
只是想把客服做成一个 Tab、或者带上自己的标题栏,用不到这一页:Android 用 HecongChatFragment、iOS 用 HecongChatViewController 就够了,选文件、权限、返回键 SDK 都已处理好,见聊天页的四种形态。
直接使用 HecongChatView 时,有几个宿主回调要你转发,下面逐条列出不转发的症状。
Android
把 HecongChatView 放进你的布局,然后转发四件事。
转发选择文件的结果
kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
chatView.onActivityResult(requestCode, resultCode, data)
}不转发的症状:客户点发图片完全没反应,选完照片回来什么也没发生。
转发权限申请的结果
kotlin
override fun onRequestPermissionsResult(
requestCode: Int, permissions: Array<String>, grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
chatView.onRequestPermissionsResult(requestCode, permissions, grantResults)
}不转发的症状:客户在权限弹窗上点了允许,录音还是用不了。
前后台联动
kotlin
override fun onStart() { super.onStart(); chatView.onHostStart() }
override fun onStop() { super.onStop(); chatView.onHostStop() }不转发的症状:客户切到后台,工作台里他仍显示在线,离线消息通知一条都不发。
必须用 onStop,不要用 onPause
分屏、盖弹窗、下拉通知栏都会触发 onPause,那时客户还看着屏幕,会被误判成离开。
释放
kotlin
override fun onDestroy() { chatView.destroy(); super.onDestroy() }键盘不用你管
SDK 会自己处理软键盘弹起时的布局,离开页面后还原,不用改 AndroidManifest.xml,也不影响 APP 里的其他页面。
iOS
iOS 用 HecongChatViewController,自己嵌进容器或者做成子控制器。前后台切换、键盘避让和安全区适配都由 SDK 处理,不需要转发任何东西。
标题栏不会重复
SDK 默认不画自己的标题栏,你在自己的布局里加标题栏,不会出现上下两条。

嵌入的位置没有导航栏、希望客服界面自己画一条时,在配置里传:
kotlin
config.extraQuery["hh"] = "0"标题栏上显示的昵称头像会随会话变化(会话前是渠道身份,客服接起后变成客服本人),自己画的话这些数据从回调里拿,见接口速查。
用了自己的返回按钮就要接一下
你自己画的标题栏上的返回按钮,点击时先问一下 SDK:
kotlin
if (!chatView.handleBackPressed()) {
finish() // SDK 说没有可关的层,才真的退出
}swift
if !chat.handleBackPressed() {
navigationController?.popViewController(animated: true)
}返回 true 表示 SDK 关掉了自己内部的一层(比如客户正开着图片预览),这时你不要再退出页面。
Android 的实体返回键同理,在 onBackPressed 里先转发。
不接的症状:客户正在看客服发来的大图,点返回直接被踢出整个客服页面。
下一步
- 客户不在 APP 时的消息推送 —— 前后台联动接好之后才会触发
- 接口速查