iOS路由跳转(四)之JKRouter持续更新1

来源:互联网 发布:递归算法反汇编 编辑:程序博客网 时间:2024/06/10 00:48

  经过前面《iOS路由跳转(一)之初识URL》,《iOS路由跳转(二)之需求分析》,《 iOS路由跳转(三)之JKRouter基础教程1
》,《 iOS路由跳转(三)之JKRouter基础教程2
》这几篇博客,对与JKRouter的思想阐述的已经比较详细了,接下来我会根据在使用过程中JKRouter遇到的问题,以及特殊需求进行持续的优化更新。

更新1

原来:

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

更新后:

@interface JKouterConfig : NSObject@property (nonatomic,strong) NSArray<NSString *>*modulesInfoFiles; // 路由配置信息的json文件名数组@property (nonatomic,strong) NSString *sepcialJumpListFileName; //跳转时有特殊动画的plist文件名@property (nonatomic,strong) NSString *webContainerName;// app中web容器的className@property (nonatomic,strong) NSString *URLScheme;//自定义的URL协议名字@property (nonatomic,weak) UINavigationController * navigationController; //app的导航控制器@end
+ (void)routerWithConfig:(JKouterConfig *)config;

通过创建了JKouterConfig类,可以配置更多的信息,同时考虑到没有实现后台下发路由表的app,路由表可能有H5和native小伙伴各自维护一部分的情况,我这边添加了@property (nonatomic,strong) NSArray<NSString *>*modulesInfoFiles; // 路由配置信息的json文件名数组支持多文件导入路由信息。

更新2

添加了如下方法:

/** 根据options和已有的vc进行跳转 @param vc 已经创建的指定的vc @param options 跳转的各种设置 */+ (void)openSpecifiedVC:(UIViewController *)vc options:(RouterOptions *)options;

对已经创建过的ViewController的跳转进行支持。

更新3

添加内容:

//******************************************************************************//*//*           RouterRight类//*           权限的信息//******************************************************************************@interface RouterRight : NSObject//进入模块的权限等级@property (nonatomic) JKAccessRight accessRight;//权限等级的辅助信息@property (nonatomic, copy) NSString *info;/**创建默认配置的权限 @return RouterRight的对象 */+ (instancetype)routerRight;@end

对权限等级判定配置进行了完善。在实际的开发过程中,我发现权限等级的分配并不是完全按照1,2,3 …递增的形式进行的。而是存在同一等级的权限有不同的表现形式,这样的话,我单纯的通过JKAccessRight的一个枚举值,无法充分的体现出权限等级的真实情况。我这边对RouterRight增加了@property (nonatomic, copy) NSString *info;这个属性,来辅助区分相同等级的不同表现形式,举个例子,绑定手机号和绑定邮箱具有相同的权限等级JKRouterAccessRight1,我们的就可以通过info进行标记说明,方便我们知道用户实际的权限情况。当然了也存在权限叠加的情况,比如绑定了手机号,邮箱后仍然属于权限等级JKRouterAccessRight1,这个时候我们也可以通过自定义的info信息来进行标记。当然了还存在另外一种情况的权限叠加,几种权限叠加到一块才能升级为更高级别的权限。比如绑定手机号,绑定邮箱,进行人脸识别认证后才能称为更高一级的权限等级JKRouterAccessRight2。这种情况我们也可以通过修改标记info信息来实现这个过程的权限标记。

更新4

  对于web容器的支持,我之前做的不够完美,心里一直不是太满意,这次做了如下更新。添加了JKRouterKeys类
代码如下:

#import <Foundation/Foundation.h>@interface JKRouterKeys : NSObject/** 配置web容器从外部获取url的property的字段名 @return property的字段名 */+ (NSString *)jkWebURLKey;@end
#import "JKRouterKeys.h"@implementation JKRouterKeys+ (NSString *)jkWebURLKey{return @"jkurl";//这里我配置了demo里的web容器接收外部url的属性名,大家可以根据自己的需求进行重写}@end
#import <UIKit/UIKit.h>@interface JKWebViewController : UIViewController@property (nonatomic,copy)NSString *jkurl;@end

这里新写了这个类的目的主要是JKRtouer后期为了满足更多更复杂的需求还可能会出现更多的需要通过重写方法来配置的字段,都可以在这个类里面进行设置。

  这次的更新到这里暂时就告一段落了,由于博客更新没有gitHub上的源码更新的及时,对JKRouter感兴趣的小伙伴可以关注
JKRouter源码
大家如果觉得有某个点没有实现或者实现的不够完美,欢迎多多批评指教。

1 0