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

Tha*_*Don 13 iphone url ipad ios

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

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

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

Ali*_*mze 12

如果您直接链接到您的应用方案,它将失败.但是,如果您使用此StackOverFlow问题上的可用代码链接到网站上的页面,它将尝试打开您的应用程序,然后尝试打开应用程序商店.


Zeb*_*Zeb 5

您只需读取方法的返回值即可-(BOOL)openURL:(NSURL*)url.如果为NO,则表示未安装目标应用程序.以下代码使用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];
}
Run Code Online (Sandbox Code Playgroud)

更新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!)
}
Run Code Online (Sandbox Code Playgroud)