接上篇《 iOS路由跳转(三)之JKRouter基础教程1》 主要讲了JKRouter本类的跳法转的方和配置类。这一篇主要讲一下Json文件解析和权限操作的两个类。这两个类的方法在现具体实现时都需要通过重载在根据自己的实况际情实现。

JKAccessRightHandler

/**
 对传入的URL进行安全性校验,防止恶意攻击

 @param url 传入的url字符串
 @return 通过验证与否的状态
 */
+ (BOOL)safeValidateURL:(NSString *)url;

/**
 根据权限等级判断是否需要跳转,具体通过category重载来实现
 
 @param options 携带的配置信息
 @return 是否进行正常的跳转
 */
+ (BOOL)validateTheRightToOpenVC:(RouterOptions *)options;

/**
 根据app运行时用户的情况来配置权限,具体通过category重载来实现
 
 @param options 页面跳转的配置信息
 @return 配置好权限的options
 */
+ (RouterOptions *)configTheAccessRight:(RouterOptions *)options;

/**
 对于没有权限打开相关页面时的后续操作,具体通过category重载来实现
 
 @param options 传入的配置信息
 */
+ (void)handleNoRightToOpenVC:(RouterOptions *)options;

JKJSONHandler

JKJSONHandler 是处理JKRouter中所有涉及到JSON解析的工具类,使用的话,需要对约定的方法进行重载。

/**
解析JSON文件 获取到所有的Modules
 @param fileName JSON文件的名字
 */
+ (NSArray *)getModulesFromJsonFile:(NSString *)fileName;

/**
 从NavigationController导航栏持有的viewControllers中根据moduleID来找到相关的ViewController

 @param moduleID 传入的ViewController标记
 @return 找到的viewController对象
 */
+ (UIViewController *)searchExistViewControllerWithModuleID:(NSString *)moduleID;


/**
 根据MoudleID找到对应的ViewController的className

 @param moduleID 传入的ViewController标记
 @return 找到的ViewController的className
 */
+ (NSString *)searchVcClassNameWithModuleID:(NSInteger)moduleID;

/**
 根据读取到的json文件中的内容找到对应的路径

 @param moduleID 传入的ViewController标记
 @param path 指定的路径
 @return 返回对应的可以在app内打开的路径
 */
+ (NSString *)searchDirectoryWithModuleID:(NSNumber *)moduleID specifiedPath:(NSString *)path;

/**
 根据moduleID验证相关模块是否需要特殊的跳转

 @param module 传入的要解析的数据
 @param moudleID 传入的ViewController标记
 @return 是否需要特殊跳转的BOOL值
 */
+ (BOOL)validateSpecialJump:(NSDictionary *)module moduleID:(NSInteger)moudleID;

注: 之所以通过重载来实现这两个类的方法,只是想来阐述自的己思路,让家大能够根据这个思路结合自的己实际情况使用JKRouter。

大家想看demo源码的话可以点击 JKRouter下载地址 如果想直接集成到项目中的话,可以使用pod "JKRouter"

注:代码在持续更新,可能和博客中贴出来的源码有所出入,感兴趣的话可以关注gitHub哦。