Как я могу закрыть / отменить вызов метода openURL
Когда приложение открывается по схеме URL (впервые, когда приложение не работает даже в фоновом режиме), didFinishLaunchingWithOptions
в приложении будет вызван, и мы можем получить UIApplicationLaunchOptionsURLKey
из словаря launchOptions
,
Я пытался вернуть НЕТ в didFinishLaunchingWithOptions
но это не имело никакого значения.
То, что я пытаюсь сделать, - это закрыть приложение, если в параметрах URL-адреса есть что-то не так, и этот URL-адрес является URL-адресом, открывающим приложение.
Скажем URL myapp://¶m1=2¶m2=2
открывает мое приложение.
В приложении-делегате я проверяю действительные параметры. Если значения параметров неверны, я не хочу URL
открыть мое приложение. Я хочу приостановить это действие и вернуться туда, откуда я пришел.
Я пытался отступить NO
в обоих didFinishLaunchingWithOptions
И в openURL
но никто не дал мне то, что я хочу.
if (![self checkURL:launchOptions[UIApplicationLaunchOptionsURLKey]]) {
DLog(@"Don't launch the app/close the app");
return NO;
}
Есть ли способ закрыть приложение (или, по крайней мере, заставить приложение работать в фоновом режиме), если URL недействителен?
1 ответ
Закрытие приложения программным способом является техническим нарушением Руководства Apple по интерфейсу пользователя ( источник). Официальные рассуждения:
Никогда не выходите из приложения iOS программно. Люди склонны интерпретировать это как крах. Если что-то мешает вашему приложению работать должным образом, вам нужно рассказать пользователям о ситуации и объяснить, что они могут с этим сделать. Вот два хороших способа сделать это:
- Если все функции приложения недоступны, отобразите экран, который описывает ситуацию и предлагает исправление. Эта информация дает обратную связь пользователям и заверяет их, что в вашем приложении нет ничего плохого. Это также дает пользователям контроль, позволяя им решить, хотят ли они предпринять корректирующие действия и продолжить использовать ваше приложение или переключиться на другое приложение.
- Если только некоторые функции приложения недоступны, отобразите экран или предупреждение, когда люди пытаются использовать эту функцию. В противном случае люди должны иметь возможность использовать остальную часть приложения. Если вы решили использовать предупреждение, убедитесь, что отображаете его только тогда, когда люди пытаются получить доступ к функции, которая не работает.
Похоже, вам, возможно, потребуется предложить какую-то ошибку, а затем позволить пользователю действовать самостоятельно. Если вы точно знаете, откуда появился пользователь (или можете узнать об этом через переданный параметр URL), вы можете предложить какую-то автоматическую маршрутизацию обратно в это другое приложение.