License MIT CocoaPods CocoaPods Support
URL routing library for iOS, support URL rewrite.
(It's a component of HZExtend)
Email:zuohong_xie@163.com
- Add
pod 'HZURLManagerto your Podfile. - Run
pod installorpod update. - Import <HZURLManager/HZURLManager.h>.
Full API documentation is available on CocoaDocs.
This library requires iOS 8.0+ and Xcode 8.0+.
HZURLManager is provided under the MIT license. See LICENSE file for details.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //Loads URL-Controller & URL-Method Config. [[HZURLManagerConfig sharedConfig] loadURLCtrlConfig:[[NSBundle mainBundle] pathForResource:@"URL-Controller-Config" ofType:@"plist"] urlMethodConfig:[[NSBundle mainBundle] pathForResource:@"URL-Method-Config" ofType:@"plist"]]; //Adds URL Rewrite rule. You may be get the rule from remote. /** The variable can be used in the target and starts with ,ドル For example, 1ドル ... $n represents the value of the corresponding tuple in the regular expression, $query represents the query string part in the URL. For example, when the @{@"match":@"(?:https://)?www.hz.com/articles/(\\d)\\?(.*)",@"target":@"hz://page.hz/article?$query&id=1ドル"} rule is applied, the rewrite engine rewrites the source URL as hz://page.hz/article?title=cool&id=3 when we redirect to https://ww.hz.com/articles/3?title=cool , Finally we'll jump to hz://page.hz/article?title=cool&id=3. */ [[HZURLManagerConfig sharedConfig] addRewriteRules:@[@{@"match":@"(?:https://)?www.hz.com/articles/(\\d)\\?(.*)",@"target":@"hz://page.hz/article?$query&id=1ドル"}]]; //Configs the default name of controller for Http(s) URL. [HZURLManagerConfig sharedConfig].classOfWebViewCtrl = @"WebViewController"; }
//Present [URL_MANAGERN redirectToURL:@"hz://page.hz/article?title=present" animated:YES parmas:nil options:@{HZRedirectPresentMode:@(YES)} completion:nil]; //Push //The following URL will be converted to hz://page.hz/article by rewriting. [URL_MANAGERN redirectToURL:@"https://www.hz.com/articles/3?title=push" animated:YES];
@interface ShowAlertURLHandler ()<HZURLHandler> @end @implementation ShowAlertURLHandler /** hz://urlmanger.kit/doAlert @param title @param message */ - (id)handleURL:(NSURL *)url withParams:(id)params { NSDictionary *queryParam = url.queryDic; NSString *title = [queryParam objectForKey:@"title"]; NSString *message = [queryParam objectForKey:@"message"]; UIAlertController *alerController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *confirmAtion = [UIAlertAction actionWithTitle:@"Confirm" style:UIAlertActionStyleDefault handler:nil]; [alerController addAction:confirmAtion]; UIAlertAction *cancleAction = [UIAlertAction actionWithTitle:@"Cancle" style:UIAlertActionStyleCancel handler:nil]; [alerController addAction:cancleAction]; [[HZURLNavigation currentViewController] presentViewController:alerController animated:YES completion:nil]; return nil; } @end //show the alert [URL_MANAGERN handleURL:@"hz://urlmanger.kit/doAlert?title=alert&message=URL-showAlert" withParams:nil];
//Creates Controller UIViewController *controller = [UIViewController viewControllerForURL:[NSURL URLWithString:@"hz://page.hz/article"]]; //Gets current Controller UIViewController *currentViewCtrl = [HZURLNavigation currentViewController]; //Gets current Navigation Controller UIViewController *currentNavViewCtrl = [HZURLNavigation currentNavigationViewController]; //Dismiss(Pop or dissmiss) View Controller [HZURLNavigation dismissCurrentAnimated:YES];
@interface UIViewController (HZURLManager) /** The URL corresponding to the Controller */ @property(nonatomic, strong, readonly) NSString *originURL; /** Consists of a query string and additional parameters passed by user. */ @property(nonatomic, strong, readonly) NSDictionary *params; @end