Можно ли открыть собственное приложение iOS с помощью пользовательской схемы URL-адресов без перехода веб-страницы на пользовательский URL-адрес?

Я пытаюсь открыть собственное приложение iOS, щелкнув ссылку в электронном письме. Я использовал «Пользовательскую схему URL». Если я наберу «test://» в браузере Safari, откроется мое родное приложение для iOS. Но если я щелкну ссылку «test://» в электронном письме, она будет иметь префикс http, например «http://test//» и не открывает приложение для iOS. Я просмотрел множество ссылок и обнаружил, что "iOS needs a Webpage which will redirect to custom url of native iOS App" открывает приложение. Is it possible to open an app from email link without using a webpage redirects to app?

заранее, спасибо за любую помощь!


person Sakthimuthiah    schedule 11.09.2015    source источник
comment
Вы не должны ставить перед ним префикс http, и он будет работать   -  person Grzegorz Krukowski    schedule 11.09.2015
comment
Спасибо за ответ. Если я нажму на ссылку типа test:// в письме, она автоматически изменится на test/, а не открывает приложение   -  person Sakthimuthiah    schedule 11.09.2015
comment
URL-адрес обратного вызова всегда проверяется на веб-странице и перенаправляется в ваше приложение, без сафари вы не можете этого сделать.   -  person Anbu.Karthik    schedule 11.09.2015


Ответы (1)


Простой ответ, скорее всего, нет, поскольку у вас мало контроля над тем, как отдельные приложения будут обрабатывать ссылки. Сложный ответ заключается в том, что вы должны что-то с этим делать. Обратите внимание, что не всегда требуется возвращать полную веб-страницу — на Android с Chrome вы можете активировать перенаправление 307 прямо на намерение Chrome.

Вы можете настроить простой веб-сервер, который при проверке связи возвращает `window.location = 'test://'.

Или, что еще лучше, вы можете попробовать открыть схему URI в iframe, а затем вернуться к веб-URL, если приложение отсутствует. Этого можно добиться с помощью следующих механизмов:

  1. на iOS 9 используйте универсальные ссылки
  2. в Chrome (и скоро в Firefox 41.0!) используйте Chrome Intents
  3. во всех других браузерах используйте javascript на стороне клиента

Вот пример javascript на стороне клиента:

<script type="text/javascript">
    window.onload = function() {
        // Deep link to your app goes here
        document.getElementById("l").src = "my_app://";

        setTimeout(function() {
            // Link to the App Store should go here -- only fires if deep link fails                
            window.location = "https://itunes.apple.com/us/app/my.app/id123456789?ls=1&mt=8";
        }, 500);
    };
</script>
<iframe id="l" width="1" height="1" style="visibility:hidden"></iframe>

Именно этим мы и занимаемся в моей компании branch.io. Мы постоянно сталкиваемся с изменениями в браузерах и веб-просмотрах, потому что всегда есть новые сценарии для покрытия. При принятии решения о том, как внедрить пользователя в ваше приложение, важно посмотреть на строку пользовательского агента.

person st.derrick    schedule 14.09.2015