2017-01-10 3 views
3

На iOS, как я могу программным образом определить, является ли URL-адрес универсальной ссылкой или просто обычным веб-URL?Как я могу программным образом определить, является ли URL-адрес универсальной ссылкой или просто обычным веб-адресом?

Предположим, вы собираетесь запустить URL-адрес http://www.yelp.com из своего собственного приложения для iOS. (http://www.yelp.com является полностью зарегистрированной универсальной связью.)

Case один) пользователь не установлено приложение -> Вы хотите, чтобы показать им сайт в качестве IN-APP WebView.

Case два), пользователь делает установлено приложение -> Вы хотите запуска из вашего приложения и глубокой связи непосредственно в приложение Yelp, используя [[UIApplication sharedApplication] OpenUrl: URL]; вместо представления webview в приложении.

Вот проблема: Все, что вы получите работу с это строка URL: «http://www.yelp.com» Ваша цель состоит в том, чтобы пуститься в приложение Yelp, если он установлен, но представить WebView в приложении, если визг является не установлен.

Примечание 1: Этот вопрос касается только универсальных ссылок. Пожалуйста, не давайте ответов, которые используют схемы URL.

Примечание 2: Этот вопрос касается не только запуска приложения визжа. Решение должно работать для любого URL-адреса, чтобы определить, является ли это универсальной ссылкой установленного приложения.

Вы можете это сделать?

+0

Используйте canOpenURL, чтобы проверить, если схема URL может быть обработана системой, если она не может (Yelp приложение не установлен), затем отобразите экран веб-просмотра. – azimov

+0

В каком случае canOpenURL вернет false для данного URL-адреса 'http: // www.yelp.com'? (В этом вопросе нет схемы, кстати, –

ответ

0

Detect, если ссылка является универсальным использованием UIApplicationOpenURLOptionUniversalLinksOnly

Ниже решение:

метода
[[UIApplication sharedApplication] openURL:url 
             options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @YES} 
          completionHandler:^(BOOL success){ 
           if(!success) { 
            // present in app web view, the app is not installed 
           } 
          }];