Phonegap Cordova: richiamare l’app mappe nativa in IOS6

In un precendente post spiegavo un work-around per richiamare l’app Mappe di google nativa su iOS da una applicazione sviluppata con phonegap: lanciando opportunamente un URL che puntasse al server maps.google.com, si apriva l’app mappe integrata. Il lancio “dell’opportuno URL” consiste in una semplice riga di codice:

[[UIApplication sharedApplication] openURL:url];

Nell’ultima versione del sistema degli iDevice l’applicazione l’app di google è stata sostituita e il comportamento degli URL è cambiato di conseguenza. In IOS6 un url a maps.google.com aprirà il sito di google in Safari. Sarà quindi necessario intercettare tutte le chiamate di apertura URL della webView e sostituire l’url corretto per la versione di  IOS. Gli URL alle mappe nella mia applicazione puntano a maps.apple.com. Il metodo è shouldStartLoadWithRequest che si trova in MainViewController.m (la posizione è cambiata rispetto a phonegap  1.0)

[sourcecode language=”objc”]
– (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType) navigationType {
NSLog(@"link:%@",[[request URL] absoluteString]);
if ([[[request URL] absoluteString] rangeOfString:@"http://maps.apple.com"].location != NSNotFound) {
// Open in native Maps App
if ([[UIDevice currentDevice].systemVersion floatValue] NSLog(@"MAPPE GOOGLE");
NSURL *url=[NSURL URLWithString:[[[request URL] absoluteString] stringByReplacingOccurrencesOfString:@"http://maps.apple.com" withString:@"http://maps.google.com" ]];
[[UIApplication sharedApplication] openURL:url];
} else {
NSLog(@"MAPPE APPLE");
[[UIApplication sharedApplication] openURL:[request URL]];
}
return NO;
}
else
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}
[/sourcecode]

[iframe src=”http://rcm-it.amazon.it/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=ac20blo-21&o=29&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=1449319548″ width=”121px” height=”240px” scrolling=”no” marginwidth=”0″ marginheight=”0″ frameborder=”0″][/iframe] [iframe src=”http://rcm-it.amazon.it/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=ac20blo-21&o=29&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B008EK6HVY” width=”121px” height=”240px” scrolling=”no” marginwidth=”0″ marginheight=”0″ frameborder=”0″][/iframe] [iframe src=”http://rcm-it.amazon.it/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=ac20blo-21&o=29&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=1430239034″ width=”121px” height=”240px” scrolling=”no” marginwidth=”0″ marginheight=”0″ frameborder=”0″][/iframe]

Tags: , , , ,

One Response to “Phonegap Cordova: richiamare l’app mappe nativa in IOS6”

  1. […] Ac^2.0 Blog pane e computer (idee varie rubate dai miei pensieri…ma anche no) « Phonegap Cordova: richiamare l’app mappe nativa in IOS6 […]