Skip to content
能力中心
产品中心
应用市场
WebOffice
开发者后台

集成网页容器界面

协作中台提供了集成网页容器界面控制器,用来显示网页内容,功能如下:

  • 提供默认的网页端内展示功能;

  • 提供基础的网页交互功能,如刷新,分享,浏览器打开等;

效果展示

可以通过两种方式集成网页容器页面:

  • 直接使用 KIMWebViewController 类,集成默认的网页容器界面。

  • 继承使用 KIMWebViewController 类,通过实现协议自定义网页容器界面。

接口定义

Swift
init(urlString: String? = nil)

参数说明

参数类型说明
urlStringString?网页的链接

代码示例

  • 直接使用 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