From 924c112e5c37fc4ed211487069ae09aa0018bf6e Mon Sep 17 00:00:00 2001 From: jz <qiaojinzhu@igengmei.com> Date: Mon, 23 Dec 2019 21:24:22 +0800 Subject: [PATCH] update GMRouter --- GMRouter/Classes/GMRouter+gm.m | 49 +++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/GMRouter/Classes/GMRouter+gm.m b/GMRouter/Classes/GMRouter+gm.m index ae521f8..f1e7784 100644 --- a/GMRouter/Classes/GMRouter+gm.m +++ b/GMRouter/Classes/GMRouter+gm.m @@ -133,47 +133,58 @@ static NSMutableDictionary *routeMap = nil; } NSString *host = url.host; NSString *targetName = [routeMap objectForKey:host]; - + NSDictionary *params = [self getParams:encodeUrlScheme withHost:host]; + host = [self getHostWithEncodeUrlScheme:encodeUrlScheme host:host]; + return [self performTarget:targetName action:host params:params shouldCacheTarget:NO]; +} + +- (NSDictionary *)getParams:(NSString *)encodeUrlScheme withHost:(NSString *)host { NSDictionary *params; NSArray *array = [encodeUrlScheme componentsSeparatedByString:@"url="]; if (([host isEqualToString:@"third_webview"] || [host isEqualToString:@"common_webview"]) && array.count > 1) { NSString *value = array[1]; - while ([value rangeOfString:@"%"].length != 0) { + //拦截所有的å³å°†è°ƒè½¬çš„url(value),如果ä¸åœ¨ç™½åå•之ä¸,让其使用GMThirdWebViewControlleråŠ è½½. + NSString *valueHost = [[NSURL URLWithString:value] host]; + if ([value rangeOfString:@"%"].length != 0) { value = [self URLDecodedString:value]; } params = @{@"url":value}; - //拦截所有的å³å°†è°ƒè½¬çš„url(value),如果ä¸åœ¨ç™½åå•之ä¸,让其使用GMThirdWebViewControlleråŠ è½½. - NSString *valueHost = [[NSURL URLWithString:value] host]; -// if ([GMServerDomains allowURLHost:valueHost] == NO) { -//#if defined DEBUG -// UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"webViewéœ€æ·»åŠ ç™½åå•" message:value delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil]; -// [alertView show]; -//#endif -// -// host = @"third_webview"; -// } } else { params = [self urlQueryToDictionary:encodeUrlScheme]; } + return params; +} -// NSDictionary *params = [self urlQueryToDictionary:encodeUrlScheme]; - - return [self performTarget:targetName action:host params:params shouldCacheTarget:NO]; +- (NSString *)getHostWithEncodeUrlScheme:(NSString *)encodeUrlScheme host:(NSString *)host { + NSArray *array = [encodeUrlScheme componentsSeparatedByString:@"url="]; + if (([host isEqualToString:@"third_webview"] || [host isEqualToString:@"common_webview"]) && array.count > 1) { + NSString *value = array[1]; + //拦截所有的å³å°†è°ƒè½¬çš„url(value),如果ä¸åœ¨ç™½åå•之ä¸,让其使用GMThirdWebViewControlleråŠ è½½. + NSString *valueHost = [[NSURL URLWithString:value] host]; + Class cls = NSClassFromString(@"GMServerDomains"); + if ([cls respondsToSelector:@selector(allowURLHost:)]) { + BOOL isAllow = [cls performSelector:@selector(allowURLHost:) withObject:valueHost]; + if (!isAllow) { + host = @"third_webview"; + } + } + } + return host; } - (id)pushScheme:(NSString *)urlScheme params:(NSDictionary *)params { - NSString *encodeUrlScheme = [self URLDecodedString:urlScheme]; + NSString *encodeUrlScheme = [self URLEncodeString:urlScheme]; NSURL *url = [NSURL URLWithString:encodeUrlScheme]; if (!url) { + // debugLog(@"å议出错了!"); } NSString *host = url.host; NSString *targetName = [routeMap objectForKey:host]; - NSDictionary *paramsDict = [self urlQueryToDictionary:encodeUrlScheme]; + NSDictionary *paramsDict = [self getParams:encodeUrlScheme withHost:host]; + host = [self getHostWithEncodeUrlScheme:encodeUrlScheme host:host]; return [self performTarget:targetName action:host params:paramsDict shouldCacheTarget:NO]; } - - #pragma mark - string to dict - (NSDictionary*)urlQueryToDictionary:(NSString *)urlScheme { NSURL* url1 = [NSURL URLWithString:urlScheme]; -- 2.18.0