简体   繁体   中英

URL Scheme for App which is not installed

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.

My question: if my application is not yet installed on their iPhone/iPad, what will happen? Will they be directed to the App Store to download my app? Or will it just fail?

I'm not at my Mac right now, otherwise I'd build a test app to launch a URL for an app I know is not installed. If I get back to my Mac before someone answers, I'll update the question with my results.

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!)
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM