canOpenURL всегда возвращает FALSE

Я пытаюсь открыть URL-адрес с помощью UIApplication, но когда я запускаю:

[[UIApplication sharedApplication] canOpenURL:urlToUpdate

URL-адрес создается с помощью строки и

NSString *urlStringToOpenEscaped = [urlStringToOpen stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *urlToUpdate = [NSURL URLWithString:urlStringToOpenEscaped];

Всегда возвращает ЛОЖЬ.

Я проверил, что URL-адрес доступен с iPad.

Любая идея?


person xarly    schedule 21.11.2012    source источник
comment
Не могли бы вы показать нам строку URL (urlStringToOpenEscaped)?   -  person BergP    schedule 21.11.2012
comment
конечно: itms-services://?action=download-manifest&url=http://address/App.plist   -  person xarly    schedule 21.11.2012
comment
Посмотрите комментарии в первом ответе здесь. Это может помочь. stackoverflow .com/questions/4695180/   -  person NikosM    schedule 21.11.2012
comment
Спасибо, постараюсь рассмотреть все случаи. Дополнительная информация: я проверил, что URL: http://address/App.plist возвращает TRUE в вызове, canOpenURL.   -  person xarly    schedule 21.11.2012


Ответы (2)


Метод canOpenURL не предназначен для проверки доступности сетевого URL-адреса. Согласно документации:

Этот метод гарантирует, что при вызове openURL: будет запущено другое приложение для его обработки. Это не гарантирует, что полный URL-адрес действителен.

Таким образом, это способ узнать, может ли ресурс, указанный URL-адресом, переданным методу, быть доступен/открыт приложением в системе.

Если вы хотите проверить, доступен ли веб-адрес или нет, вам придется выполнить запрос, а затем обработать результат в ответе.

person NikosM    schedule 21.11.2012
comment
Я знал это, поэтому перед вызовом UIApplication я проверил с помощью NSURLConnection, что ресурс доступен, и получил статус 200. Если я удалю [[UIApplication sharedApplication] canOpenURL:urlToUpdate] при вызове [[UIApplication sharedApplication] openURL:urlToUpdateWithHeaders]; не работает, ничего не делать. - person xarly; 21.11.2012

В iOS 9 внесены некоторые изменения в политику использования canopenURL, чтобы предотвратить неправильное использование API рекламными службами.

http://www.macrumors.com/2015/06/24/ios-9-policy-change-advertising-privacy/

person Vivekanandan    schedule 11.09.2015
comment
Это не то, это не info.plist для comgooglemaps. Что-то еще не так. Вероятно, ошибка в GoogleMaps или iOS, или в обоих - person Radu; 13.11.2015