// // AppDelegate+Deeplink.m // iCemarose // // Created by Sanchew on 2017/6/29. // Copyright © 2017年 kollway. All rights reserved. // #import "AppDelegate+Deeplink.h" #import <JLRoutes/JLRoutes.h> #import "AppDelegate.h" #import "KWMNewProductVC.h" #import "KWMSelectedGoodsVC.h" #import "KWMBlogDetailVC.h" #import "KWMNewProductVC.h" #import "KWMBrandCaramelVC.h" #import "KWMStringUtil.h" static NSMutableDictionary *controllerCache = nil; @implementation AppDelegate (Deeplink) - (UINavigationController *) navigationController { return [[AppDelegate mainViewController] selectedViewController]; } - (void) pushViewController:(UIViewController *) vc { [[self navigationController] pushViewController:vc animated:[[UIApplication sharedApplication] applicationState] == UIApplicationStateActive]; } - (void)registerRouter { // JLRoutes *routes = [JLRoutes routesForScheme:@"cemarose"]; JLRoutes *routes = [JLRoutes globalRoutes]; [routes addRoute:@"/collections/:handle/*" handler:^BOOL(NSDictionary<NSString *,id> * _Nonnull parameters) { if (!controllerCache) { controllerCache = [NSMutableDictionary new]; } NSString *url = parameters[JLRouteURLKey]; if ([controllerCache objectForKey:url]) { id vc = controllerCache[url]; [self pushViewController:vc]; return YES; } NSArray *tags = parameters[JLRouteWildcardComponentsKey]; NSString *handle = [parameters[@"handle"] lowercaseString]; tags = tags.count > 0 ? [tags[0] componentsSeparatedByString:@"+"] : nil; // NSArray *tags = [parameters[JLRouteWildcardComponentsKey] componentsSeparatedByString:@"+"]; NSLog(@"trace tags %@",[tags componentsJoinedByString:@","]); NSArray *brands = @[@"amelie-wang",@"babywalker",@"beau-loves",@"billieblush",@"billybandit",@"bonpoint",@"burberry",@"caramel",@"chloe",@"collegien",@"dolce-gabbana",@"emile-et-ida",@"fendi",@"gucci",@"hucklebones",@"il-gufo",@"indikidual",@"karl-lagerfeld-kids",@"kenzo",@"lanvin",@"little-marc-jacobs",@"loud-apparel",@"louis-louise",@"louise-misha",@"marie-chantal",@"marni",@"mini-melissa",@"mini-rodini",@"mischka-aoki",@"moncler",@"moschino",@"msgm",@"nailmatic",@"nana-huchy",@"noukies",@"oeuf",@"patachou",@"paul-smith",@"pepe",@"sons-daughters-eyewear",@"stella-mccartney-kids",@"story-loris",@"tartine-et-chocolat",@"the-animals-observatory",@"tiny-cottons",@"veja",@"young-versace",@"zadig-voltaire",@"wolf-rita"]; NSDictionary *brandNames = @{@"amelie-wang":@"Amelie Wang",@"babywalker":@"Babywalker",@"beau-loves":@"Beau Loves",@"billieblush":@"Billieblush",@"billybandit":@"Billybandit",@"bonpoint":@"Bonpoint",@"burberry":@"Burberry",@"caramel":@"Caramel",@"chloe":@"Chloé",@"dolce-gabbana":@"Dolce & Gabbana",@"emile-et-ida":@"Emile et Ida",@"fendi":@"Fendi",@"givenchy":@"Givenchy",@"gucci":@"Gucci",@"hucklebones":@"Hucklebones",@"il-gufo":@"Il Gufo",@"indikidual":@"Indikidual",@"karl-lagerfeld-kids":@"Karl Lagerfeld Kids",@"kenzo":@"Kenzo",@"lanvin":@"Lanvin",@"little-marc-jacobs":@"Little Marc Jacobs",@"loud-apparel":@"Loud Apparel",@"louis-louise":@"Louis Louise",@"louise-misha":@"Louise Misha",@"marie-chantal":@"Marie-Chantal",@"marni":@"Marni",@"mini-melissa":@"Mini Melissa",@"mini-rodini":@"Mini Rodini",@"mischka-aoki":@"Mischka Aoki",@"moncler":@"Moncler",@"moschino":@"MOSCHINO",@"msgm":@"MSGM",@"nailmatic":@"Nailmatic",@"nana-huchy":@"Nana Huchy",@"noukies":@"Noukie's",@"oeuf":@"Oeuf",@"patachou":@"Patachou",@"paul-smith":@"Paul Smith",@"pepe":@"PèPè",@"sons-daughters-eyewear":@"Sons + Daughters Eyewear",@"stella-mccartney-kids":@"Stella McCartney Kids",@"story-loris":@"Story Loris",@"tartine-et-chocolat":@"Tartine et Chocolat",@"the-animals-observatory":@"The Animals Observatory",@"tiny-cottons":@"Tiny Cottons",@"tip-toey-joey":@"Tip Toey Joey",@"veja":@"Veja",@"young-versace":@"Young Versace",@"zadig-voltaire":@"Zadig & Voltaire",@"wolf-rita":@"Wolf & Rita"}; //将handle的转化放到这里,转化之前将没转化过的handle存为标题 NSString *title = handle; // handle = [[KWMStringUtil deleteOtherCharExceptLetterWithLine:handle] lowercaseString]; if (parameters[@"title"]) { title = parameters[@"title"]; } if ([brands containsObject:handle]) { KWMBrandCaramelVC *brandCaramelVC = [KWMBrandCaramelVC getNewInstance]; brandCaramelVC.isSale = NO; brandCaramelVC.handle = handle; //brandCaramelVC.brand = brandNames[[handle lowercaseString]]; brandCaramelVC.brand = brandNames[handle]; brandCaramelVC.title = title; [self pushViewController:brandCaramelVC]; [controllerCache setObject:brandCaramelVC forKey:url]; }else{ KWMSelectedGoodsVC * selectedGoodsVC = (KWMSelectedGoodsVC *)[KWMBaseVC findControllerBy:[KWMSelectedGoodsVC kwmTag] fromStoryboard:@"New"]; selectedGoodsVC.handle = handle; selectedGoodsVC.ctags = tags; //selectedGoodsVC.title = parameters[@"title"]; selectedGoodsVC.title = title; [self pushViewController:selectedGoodsVC]; [controllerCache setObject:selectedGoodsVC forKey:url]; } return YES; }]; [routes addRoute:@"/products/:id" handler:^BOOL(NSDictionary<NSString *,id> * _Nonnull parameters) { NSLog(@"product id %@",parameters[@"id"]); KWMNewProductVC *vc = [KWMNewProductVC getNewInstance]; // KWMNewProductVC *productDetailVC = [KWMNewProductVC getNewInstance]; // productDetailVC.product = brandCell.leftProduct; vc.handle = parameters[@"id"]; // NSLog(@"%@",[AppDelegate mainViewController].selectedViewController); [self pushViewController:vc]; return YES; }]; [routes addRoute:@"/blogs/:blog/:handle" handler:^BOOL(NSDictionary<NSString *,id> * _Nonnull parameters) { KWMBlogDetailVC *blogDetailVC = (KWMBlogDetailVC *)[KWMBlogDetailVC findControllerBy:@"KWMBlogDetailVC" fromStoryboard:@"Home"]; blogDetailVC.handle = parameters[@"handle"]; blogDetailVC.type = KWMContentTypeBlog;; blogDetailVC.title = parameters[@"title"]; [self pushViewController:blogDetailVC]; return YES; }]; [routes addRoute:@"/pages/:handle" handler:^BOOL(NSDictionary<NSString *,id> * _Nonnull parameters) { KWMBlogDetailVC *blogDetailVC = (KWMBlogDetailVC *)[KWMBlogDetailVC findControllerBy:@"KWMBlogDetailVC" fromStoryboard:@"Home"]; blogDetailVC.handle = parameters[@"handle"]; blogDetailVC.type = KWMContentTypePage; blogDetailVC.title = parameters[@"title"]; [self pushViewController:blogDetailVC]; return YES; }]; } - (BOOL)handleURL:(NSURL *)url { return [JLRoutes routeURL:url]; } @end