application: openURL: sourceApplication: аннотация возвращает НЕТ против ДА - PullRequest
9 голосов
/ 14 сентября 2011

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

application:openURL:sourceApplication:annotation

В соответствии с документацией вы должны вернуть YES, если можете поддерживать URL, и NO, если нет. Что хорошего это делает, хотя? Я возвращаю НЕТ в том случае, если URL-адрес неверен или не поддерживается, но приложение все равно открывается, как будто ничего не случилось. Кто слушает это возвращение BOOL и что они с ним делают? Есть ли способ предотвратить открытие приложения, если URL-адрес искажен или не поддерживается?

1 Ответ

5 голосов
/ 10 августа 2012

В документации сказано, что вы возвращаете YES, если вы успешно открыли URI, и NO, если вы этого не сделали. Обратите внимание, что « удалось или не удалось открыть » семантически отличается от « может или не может открыть ». К сожалению, нет способа предотвратить запуск приложения - если оно регистрирует схему, то оно будет запущено независимо от того, правильно ли отформатирован оставшийся URI.

UIApplication имеет два метода: canOpenURL: и openURL:. Первый ONLY проверяет, поддерживается ли схема (не полный URL), где последний запускает приложение и возвращает результат делегата приложения.

Итак, чтобы ответить на ваш вопрос: другое приложение, которое вызывает [[UIApplication sharedApplication] openURL:url], - это то, кто слушает результаты вашего делегата

...