Когда приложение открывается по схеме URL (в первый раз, когда приложение даже не находится в фоновом режиме), didFinishLaunchingWithOptions
в приложении будет вызван, и мы сможем получить UIApplicationLaunchOptionsURLKey
из словаря launchOptions
.Как закрыть/вернуть вызов методу openURL
Я попытался вернуть NO в didFinishLaunchingWithOptions
, но это не имело никакого значения.
Что я пытаюсь сделать, это закрыть приложение, когда что-то не так с параметрами в 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 является недействительным?
В этом случае вы должны просто отобразить сообщение об ошибке. Вы не можете препятствовать открытию своего приложения или заставить его закрыться, и даже если бы он мог быть невероятно запутанным для пользователя. – dan
Я подумал о том, чтобы показать пользователю о ситуации и отпустить это всплывающее окно, а затем отклонить приложение. Кажется, что это невозможно сделать так, как я хочу. Интересно, почему яблоко не обеспечило способ closeURL, как метод openURL. –