集成网页容器界面
协作中台提供了集成网页容器界面控制器,用来显示网页内容,功能如下:
提供默认的网页端内展示功能;
提供基础的网页交互功能,如刷新,分享,浏览器打开等;
效果展示

可以通过两种方式集成网页容器页面:
直接使用
KIMWebViewController
类,集成默认的网页容器界面。继承使用
KIMWebViewController
类,通过实现协议自定义网页容器界面。
接口定义
Swift
init(urlString: String? = nil)
参数说明
参数 | 类型 | 说明 |
---|---|---|
urlString | String? | 网页的链接 |
代码示例
- 直接使用
KIMWebViewController
。
Swift
let vc = KIMWebViewController(urlString: self.urlString)
controller.navigationController?.pushViewController(vc, animated: true)
- 继承使用
KIMWebViewController
。
Swift
class CustomWebViewController: KIMWebViewController {
required init(urlString: String) {
super.init(urlString: urlString, options: options, hiddenRightItem: hiddenRightItem)
self.delegate = self
}
}
extension CustomWebDialogViewController: KIMWebViewControllerDelegate {
var customMenuItemID: String { "CustomMenuItemID" }
func webViewController(_: KIMWebViewController, updateWebPopupMenus menus: [KIMWebViewMenuItem]) -> [KIMWebViewMenuItem] {
var menus = menus
menus.removeAll(where: { $0.id == KIMWebViewMenuItem.refresh })
menus.insert(
.init(id: customMenuItemID, icon: UIImage(named: "demo_custom_button"), label: "自定义"),
at: 0
)
return menus
}
func webViewController(_ controller: KIMWebViewController, onClickedWebMenuItem item: KIMWebViewMenuItem, defaultHandler: @escaping () -> Void) {
if item.id == KIMWebViewMenuItem.refresh {
// 自定义刷新按钮处理
} else if item.id == customMenuItemID {
// 自定义按钮处理
controller.toast(text: "自定义按钮被点击")
} else {
defaultHandler()
}
}
}
// 如果需要SDK内部全局替换成自定义的子类(如 CustomWebAppViewController),可注册子类类型。
KIM.workSpaceModule.webViewControllerType = CustomWebDialogViewController.self