Подтвердить что ты не робот

URL-схема для приложения, которое не установлено

Простой вопрос, я разрабатываю приложение, которое зарегистрирует свою собственную схему URL. Я планирую запустить приложение с помощью QRCode с помощью любимого читателя QRCode.

Мой вопрос:, если мое приложение еще не установлено на их iPhone/iPad, что произойдет? Будут ли они направлены в App Store для загрузки моего приложения? Или это просто не получится?

Я сейчас не на своем Mac, иначе я бы создал тестовое приложение для запуска URL-адреса для приложения, которое, как я знаю, не установлен. Если я вернусь на свой Mac до того, как кто-то ответит, я обновлю вопрос с моими результатами.

4b9b3361

Ответ 1

Если вы прямо ссылаетесь на свою схему приложений, она не удастся. Однако, если вы ссылаетесь на страницу на веб-сайте с кодом fooobar.com/questions/96548/..., он попытается открыть ваше приложение, а затем магазин приложений, если он не сработает.

Ответ 2

Вы можете просто прочитать возвращаемое значение метода -(BOOL)openURL:(NSURL*)url. Если это НЕТ, это означает, что целевое приложение не установлено. Следующий код дает пример с использованием схемы 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!)
}