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

界面跳转

路由跳转

协作中台SDK提供路由跳转接口,支持跳转到对应的deeplink。

接口定义

swift
class func navigate(urlString: String, from: UIViewController) -> Bool
Objective-C
+ (BOOL)navigateWithUrlString:(NSString *)urlString from:(UIViewController *)from;

参数说明

参数类型说明
urlStringString网页 URL / WOA Deeplink
fromUIViewController当前视图控制器,用于呈现页面

参数说明

类型说明
Bool是否处理成功
true: 成功, false: 失败

代码示例

swift
let success = KIMRouter.navigate(urlString: deeplink, from: vc)
Objective-C
BOOL success = [KIMRouter navigateWithUrlString:deeplink from:[[UIViewController alloc]

路由拦截器

如果需要拦截内部默认的跳转行为时, 可以通过实现拦截器拦截内部路由事件。

注意不能在拦截器协议方法里调用 KIMRoternavigate(urlString: String, from: UIViewController) 方法, 否则引起循环调用.

接口定义

KIMRoterInterceptor 协议说明:

方法参数说明
routerurl: String
跳转 URL

rom: UIViewController
当前视图控制器

completionHandler: @escaping (_ handle: Bool) -> Void
完成处理闭包,handle 表示是否拦截处理跳转,
true: 拦截后处理跳转;
false: 不处理调整,继续由内部处理。
路由拦截协议方法,可以实现该方法拦截内部路由事件。

代码示例

swift
// 实现拦截器协议
class CustomRoterInterceptor: NSObject, KIMRoterInterceptor {

    static let shared = CustomRoterInterceptor()
    func router(url: String, from: UIViewController, completionHandler: @escaping (Bool) -> Void) {
        // 是否处理的判断条件, 视具体情况而定, 以下只是简单说明例子, 不具备通用性
        let handle = url == "/"
        if handle {
            let alert = UIAlertController(title: "拦截跳转测试", message: nil, preferredStyle: .alert)
            alert.addAction(.init(title: "确定", style: .default))
            from.present(alert, animated: true)
        }
        // 回调给sdk是否处理
        completionHandler(handle)
    }
}

// 赋值到 KIMRouter 的 roterInterceptor
KIM.router.roterInterceptor = CustomRoterInterceptor.shared