From e7511c6b87a0d498352318f1aaefafdcf6504071 Mon Sep 17 00:00:00 2001 From: VladiMihaylenko Date: Fri, 17 Apr 2015 17:17:28 +0300 Subject: [PATCH] [ios] Fixed launch from url. --- iphone/Maps/Classes/MapsAppDelegate.mm | 51 ++++++++++++++++---------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/iphone/Maps/Classes/MapsAppDelegate.mm b/iphone/Maps/Classes/MapsAppDelegate.mm index a42e6191f3..9b9e3b75fc 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.mm +++ b/iphone/Maps/Classes/MapsAppDelegate.mm @@ -109,6 +109,11 @@ void InitLocalizedStrings() #else NSString * serverUrl = @"http://localhost:8080/2"; #endif + + NSURL *url = launchOptions[UIApplicationLaunchOptionsURLKey]; + if (url != nil) + [self checkLaunchURL:url]; + [Alohalytics setup:serverUrl andFirstLaunch:[MapsAppDelegate isFirstAppLaunch] withLaunchOptions:launchOptions]; [[Statistics instance] startSessionWithLaunchOptions:launchOptions]; @@ -354,28 +359,11 @@ void InitLocalizedStrings() // We don't support HandleOpenUrl as it's deprecated from iOS 4.2 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { - NSString * scheme = url.scheme; - - m_scheme = scheme; m_sourceApplication = sourceApplication; + + if ([self checkLaunchURL:url]) + return YES; - // geo scheme support, see http://tools.ietf.org/html/rfc5870 - if ([scheme isEqualToString:@"geo"] || [scheme isEqualToString:@"ge0"]) - { - m_geoURL = [url absoluteString]; - return YES; - } - else if ([scheme isEqualToString:@"mapswithme"] || [scheme isEqualToString:@"mwm"]) - { - m_mwmURL = [url absoluteString]; - return YES; - } - else if ([scheme isEqualToString:@"file"]) - { - m_fileURL = [url relativePath]; - return YES; - } - NSLog(@"Scheme %@ is not supported", scheme); if ([[[UIDevice currentDevice] systemVersion] integerValue] < 7) return NO; @@ -394,6 +382,29 @@ void InitLocalizedStrings() [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(dismissAlert) userInfo:nil repeats:NO]; } +- (BOOL)checkLaunchURL:(NSURL *)url +{ + NSString *scheme = url.scheme; + m_scheme = scheme; + if ([scheme isEqualToString:@"geo"] || [scheme isEqualToString:@"ge0"]) + { + m_geoURL = [url absoluteString]; + return YES; + } + else if ([scheme isEqualToString:@"mapswithme"] || [scheme isEqualToString:@"mwm"]) + { + m_mwmURL = [url absoluteString]; + return YES; + } + else if ([scheme isEqualToString:@"file"]) + { + m_fileURL = [url relativePath]; + return YES; + } + NSLog(@"Scheme %@ is not supported", scheme); + return NO; +} + - (void)dismissAlert { if (m_loadingAlertView)