1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//
// 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