界面跳转
路由跳转
协作中台SDK提供路由跳转接口,支持跳转到对应的deeplink。
接口定义
swift
class func navigate(urlString: String, from: UIViewController) -> Bool
Objective-C
+ (BOOL)navigateWithUrlString:(NSString *)urlString from:(UIViewController *)from;
参数说明
参数 | 类型 | 说明 |
---|---|---|
urlString | String | 网页 URL / WOA Deeplink |
from | UIViewController | 当前视图控制器,用于呈现页面 |
参数说明
类型 | 说明 |
---|---|
Bool | 是否处理成功 true: 成功, false: 失败 |
代码示例
swift
let success = KIMRouter.navigate(urlString: deeplink, from: vc)
Objective-C
BOOL success = [KIMRouter navigateWithUrlString:deeplink from:[[UIViewController alloc]
路由拦截器
如果需要拦截内部默认的跳转行为时, 可以通过实现拦截器拦截内部路由事件。
注意不能在拦截器协议方法里调用
KIMRoter
的navigate(urlString: String, from: UIViewController)
方法, 否则引起循环调用.
接口定义
KIMRoterInterceptor
协议说明:
方法 | 参数 | 说明 |
---|---|---|
router | url: 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