Подтвердить что ты не робот

Система iOS зависает перед открытием URL-адреса магазина приложений

  • У меня есть страница HTML с кнопкой "Загрузить приложение". При нажатии пользователем iOS он перенаправляет пользователей в App Store через itms-services. Используемая здесь ссылка:

    window.location.replace("itms-apps://itunes.apple.com/app/id578505616");
    

    В мобильном браузере он выглядит так: Mobile webpage with Download button

  • Facebook/Pinterest имеет браузер в приложении, который запрашивает согласие пользователя, прежде чем перенаправить пользователя из своего приложения в форме окна "Предупреждение" с помощью приложения "Отменить" или "Открыть", открытое приложение открывает внешнюю ссылку. Это выглядит так: Mobile webpage with Download button embedded in Facebook

Похоже на это с помощью окна "Предупреждение": FB embedded browser with alert box

Предполагая, что пользователь использует устройство iOS. Ожидаемое поведение здесь, когда нажата кнопка Open app, пользователь перенаправляется в приложение App Store. Однако мы наблюдаем за 10-секундную задержку до того, как произойдет фактическое перенаправление.

Смотрите видео ниже:

https://www.youtube.com/watch?v=_dgh7v-IsK8

https://www.youtube.com/watch?v=_LFHeRnBFgg

https://www.youtube.com/watch?v=82Y-kj-pMyw

Примечания:

  • Я не могу воспроизвести это в любое время. Иногда это воспроизводится. Извините!
  • После того, как устройство будет отложено в первый раз, все последующие ссылки на AppStores будут быстрыми, до примерно 1 дня. Перезагрузка телефона и/или очистка кеша браузера и/или переустановка Facebook/Pinterest не помогают воспроизвести это.
  • Я попытался заменить ссылку itms-apps://на https://itunes.apple.com/us/app/trusper-tips-tutorials-how/id578505616?mt=8, но мы все еще испытывали задержку от времени до время.
  • Задержка составляет ровно 10 секунд.

Почему происходит эта задержка? Это похоже на плохой пользовательский интерфейс.

Моя нынешняя теория заключается в том, что проблема стоит на стороне Apple. Причина заключается в том, что после нажатия кнопки Open app она находится вне нашего сайта, а также приложение Facebook/Pinterest. Я предполагаю, что после нажатия кнопки iOS обрабатывает фактический контекстный переключатель из одного приложения в другое. Поэтому он предполагает, что либо системный вызов, фактически открывающий URL-адрес, висит, либо системный вызов, открывающий приложение App Store, является? Тем не менее, я не смог доказать, что кто-либо является правдивым или ложным. У кого-нибудь есть лучшее объяснение?

[Редактировать 04/02/2015] Я могу подтвердить, что эта проблема по-прежнему существует на сегодняшний день на моем телефоне (iPhone 5S w/iOS 8.2). Я сделал некоторые дальнейшие исследования и нашел эту статью, которая, я думаю, предполагает, что это ошибка, связанная с системой iOS: OpenUrl затягивает приложение более 10 секунд

4b9b3361

Ответ 1

Поскольку нет надлежащей документации о том, как это работает, трудно определить причину этого.

Позвольте мне выдвинуть теорию.

  • Открытие приложения из браузера вызывает контекстный переключатель; от браузера до App Store. Так что в первый раз это будет стоить некоторое время, в то время как в последующие времена оно будет открываться быстрее, поскольку оно будет открыто из кеша.

  • Если вы считаете, что AppStore использует соединение Keep-alive между iOS AppStore в устройстве и iOS AppStore Server, то при первом открытии сокета на сервере будет казаться выше, чем в последующие моменты, когда последующий запрос будет повторно использовать одно и то же соединение.

  • Если приложение будет удалено из кеша, снова потребуется некоторое время для открытия приложения, и будет небольшая сетевая задержка, так как приложение потеряет файл cookie для подключения keep-alive, затем приложение должно было бы перенести стоимость открытия магазина.

  • Есть и другие факторы, такие как Safari, висящие, что приводит к некоторой задержке. Вы можете прочитать, как Safari можно испортить здесь.

  • iOS не содержит сборку мусора, только такие вещи, как ARC (автоматический подсчет ссылок). У каждого свои преимущества и недостатки. Иногда эти недостатки могут возникать и вызывать некоторые проблемы; ничто не должно быть исключено. Например, утечка памяти или сбой приложения могут оставить оборванные указатели.

  • Технически использование itms-apps должно дать небольшое преимущество перед обычным URL-адресом iTunes, потому что itms-apps должен сузить поиск; itms-apps означает iTunes Music Store-приложения. Обычным URL-адресом iTunes может быть книга (iBook), музыка (iTunes), приложение (Appstore) и т.д., Поэтому iOS, возможно, придется решить, какое приложение запускаться.

Надеюсь, это поможет.