MGJRouter实践总结


1.创建路由配置类 HZSSchemeConfig 继承自NSObject

.h类示例

/*设置
 * 无参数
 */
UIKIT_EXTERN NSString *const kHZSSettingViewController;

.m类示例

NSString *const kHZSSettingViewController = @"HZS://native/HZSSettingViewController";

 

2.在需要跳转的类中,将路由注册到路由表中

+ (void)load {
    [MGJRouter registerURLPattern:kHZSSettingViewController toHandler:^(NSDictionary *routerParameters) {
        HZSSettingViewController *vc = [[HZSSettingViewController alloc] init];
        [[UIViewController currentNavigationController] pushViewController:vc animated:YES];
    }];
}

 

3.A类跳转到设置页面 HZSSettingViewController ,并传值 name:zhangsan

[MGJRouter openURL:kHZSSettingViewController withUserInfo:@{@"name":@"zhangsan"} completion:^(id result) {
}];

设置页面,registerURLPattern 方法里可以获取传进来的数据

NSDictionary *userInfo = routerParameters[MGJRouterParameterUserInfo];

 

4.设置页面 HZSSettingViewController 回传数据到A类,传字符串 1

HZSSettingViewController 类

@property (nonatomic, copy) void (^attentionBlock)(NSString *attentionStatus);

设置页面,registerURLPattern 方法里设置回调

vc.attentionBlock = routerParameters[MGJRouterParameterCompletion];

在需要传值的地方

if (self.attentionBlock) {
        self.attentionBlock(@"1");
    }

A类 openURL 方法的 completion 回调中,可以接收到设置页面回传的值

 

上面写了跳原生页面的逻辑,下面需要写全局统一的方法,判断跳原生、H5、小程序,后台根据客户端规则传 jumpType 、module 、detailId 即可

/// 页面跳转
/// @param jumpType 0 - 无;1 - 原生;2 - H5;3 - 微信小程序;
/// @param module 原生跳转模块,或者是小程序的userName,H5的标题
/// @param detailId 详情页id,或者是小程序的path,H5的地址
+ (void)jumpWithType:(NSString *)jumpType module:(NSString *)module detailId:(NSString *)detailId
{
}

 类比文字开头,需要注册以下标识

/*
 *HZS://native  原生页面
 *HZS://h5          h5页面
 */
#pragma mark 网页
NSString *const kHZSHomeWebViewController = @"HZS://h5?detailId=http://";
NSString *const kHZSHomeWebHttpsViewController = @"HZS://h5?detailId=https://";

#pragma mark 小程序
NSString *const kHZSMicroProgramePage = @"HZS://microProgramePage";

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM