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