Почему тайм-аут не выполняется в Safari, когда он не открывается в приложении?

#javascript #ios #timeout #app-store #deep-linking

#javascript #iOS #тайм-аут #app-store #глубокая привязка

Вопрос:

Я написал следующий javascript для Safari на iOS:

 window.location = "myapp://";
setTimeout(function() {
  window.location = "itms-apps://geo.itunes.apple.com/us/myapp";
}, 9000);
 

Итак, первая строка пытается открыть приложение, используя схему URI. Если приложение установлено, пользователю отображается диалоговое окно для подтверждения открытия в приложении, затем пользователь нажимает «Да», и приложение открывается. В этом случае код тайм-аута никогда не выполняется, потому что javascript перестал выполняться после открытия приложения (что произойдет менее чем за 9 секунд). Так что это нормально.

Если приложение не установлено, вы получаете известную ошибку «Safari не может открыть страницу, потому что адрес неверен», а затем …. это остается так навсегда. Но у меня там тоже есть тайм-аут, который должен был истечь через 9 секунд, и Appstore должен был открыться, верно? Так почему Appstore не открывается через 9 секунд? Почему мой код тайм-аута никогда не выполняется?