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";