Как я могу закрыть / отменить вызов метода openURL

Когда приложение открывается по схеме URL (впервые, когда приложение не работает даже в фоновом режиме), didFinishLaunchingWithOptions в приложении будет вызван, и мы можем получить UIApplicationLaunchOptionsURLKey из словаря launchOptions,

Я пытался вернуть НЕТ в didFinishLaunchingWithOptions но это не имело никакого значения.

То, что я пытаюсь сделать, - это закрыть приложение, если в параметрах URL-адреса есть что-то не так, и этот URL-адрес является URL-адресом, открывающим приложение.

Скажем URL myapp://&param1=2&param2=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 программно. Люди склонны интерпретировать это как крах. Если что-то мешает вашему приложению работать должным образом, вам нужно рассказать пользователям о ситуации и объяснить, что они могут с этим сделать. Вот два хороших способа сделать это:

  1. Если все функции приложения недоступны, отобразите экран, который описывает ситуацию и предлагает исправление. Эта информация дает обратную связь пользователям и заверяет их, что в вашем приложении нет ничего плохого. Это также дает пользователям контроль, позволяя им решить, хотят ли они предпринять корректирующие действия и продолжить использовать ваше приложение или переключиться на другое приложение.
  2. Если только некоторые функции приложения недоступны, отобразите экран или предупреждение, когда люди пытаются использовать эту функцию. В противном случае люди должны иметь возможность использовать остальную часть приложения. Если вы решили использовать предупреждение, убедитесь, что отображаете его только тогда, когда люди пытаются получить доступ к функции, которая не работает.

Похоже, вам, возможно, потребуется предложить какую-то ошибку, а затем позволить пользователю действовать самостоятельно. Если вы точно знаете, откуда появился пользователь (или можете узнать об этом через переданный параметр URL), вы можете предложить какую-то автоматическую маршрутизацию обратно в это другое приложение.

Другие вопросы по тегам