未安装的应用程序的URL方案

时间:2012-03-14 19:55:14

标签: iphone ios ipad url

简单的问题,我正在开发一个注册自己的URL Scheme的应用程序。我计划通过一个人最喜欢的QRCode阅读器使用QRCode启动应用程序。

我的问题:如果我的应用尚未在iPhone / iPad上安装,会发生什么?他们会被引导到App Store下载我的应用吗?或者它会失败吗?

我现在不在我的Mac上,否则我会构建一个测试应用程序来启动我知道未安装的应用程序的URL。如果我在某人回答之前回到我的Mac,我会用我的结果更新问题。

2 个答案:

答案 0 :(得分:11)

如果直接链接到您的应用方案,则会失败。但是,如果您使用可用代码on this StackOverFlow question链接到网站上的网页,则会尝试打开您的应用,如果失败则会尝试打开应用商店。

答案 1 :(得分:5)

您只需阅读方法-(BOOL)openURL:(NSURL*)url的返回值即可。如果否,则表示目标应用程序未安装。以下代码使用navigon url方案给出了一个示例:

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];
}

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