Simple question, I\'m developing an application that will register its own URL Scheme. I plan to launch the application using a QRCode via a person\'s favourite QRCode reader.
If you link directly to your app scheme, it will fail. However, if you link to a page on a website with the code available on this StackOverFlow question, it will attempt to open your app, then the app store if it fails.
You can simply read the return value of the method -(BOOL)openURL:(NSURL*)url
. If it's NO, it means that the target application isn't installed. The following code gives an example using the navigon url scheme:
NSString *stringURL = @"navigon://coordinate/NaviCard/19.084443/47.573305";
NSURL *url = [NSURL URLWithString:stringURL];
if([[UIApplication sharedApplication] openURL:url]) {
NSLog(@"Well done!");
} else {
stringURL = @"https://itunes.apple.com/it/app/navigon-europe/id320279293?mt=8";
url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
}
Update Swift 3
var stringURL = "navigon://coordinate/NaviCard/19.084443/47.573305"
var url = URL.init(string: stringURL)
if !UIApplication.shared.canOpenURL(url!) {
stringURL = "https://itunes.apple.com/it/app/navigon-europe/id320279293?mt=8"
url = URL.init(string: stringURL)
}
if #available(iOS 10.0, *) {
UIApplication.shared.open(url!, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url!)
}