Пользовательская схема URL без запроса подтверждения (Swift)

Я нашел два варианта, чтобы открыть свое приложение с веб-страницы Safari: настраиваемая схема URL, созданная в проекте моего приложения. Info.plist или универсальная связь Apple. Очевидно, что настраиваемую схему URL проще всего настроить, но проблема, с которой я сталкиваюсь, заключается в том, что Safari показывает окно подтверждения, спрашивающее "Открыть". myapp?"и пользователь должен нажать" ОК ", прежде чем приложение действительно откроется. Я хочу, чтобы мое приложение открывалось автоматически при открытии схемы, и мне говорят, что единственный способ сделать это - через универсальные ссылки (пожалуйста, исправьте меня, если это не так.) Если это правда, однако, я хотел бы знать, возможно ли каким-либо образом поставить требуемый apple-app-site-association файл на http:// домен вместо https://? Согласно официальной документации Apple, формат правильной Universal Link начинается явно с https:// но мое доменное имя не может быть загружено на https:// без перенаправления несколько раз, и это портит веб-сервисы, которые я написал для выполнения других задач в моем приложении. Два главных вопроса, которые мне остались после этого номера:

1) Действительно ли невозможно обойти запрос подтверждения, используя собственную схему URL (myscheme://)? Если это не невозможно, как я могу это сделать?

2) Если мне нужно использовать Apple Universal Linking, могу ли я использовать http:// домен? Если да, то как мне это сделать? Прямо сейчас, если я загружу универсальную ссылку, она просто показывает словарь внутри apple-app-site-association файл, который, я уверен, не должен произойти. Мне сказали, что это должно послать NSUserActivity возражать против моего делегата приложения. Как я могу сделать это с http:// ссылка на сайт?

2 ответа

Невозможно запустить пользовательскую схему URI, не показывая предупреждение пользователю. Раньше это было возможно в iOS 8, но iOS 9 начала показывать предупреждение для всех приложений. И iOS 10.3 распространила это даже на сам App Store. Вы не можете обойти это. Universal Links были созданы, чтобы заменить схемы URI для этого поведения, поэтому вам нужно использовать их вместо этого.

Из вашего описания, я полагаю, вы можете неправильно понять, как работают Universal Links. Чтобы ответить на буквальные вопросы, которые вы задали в первую очередь, сам URL универсальной ссылки не обязательно должен быть на https:// протокол, и да, apple-app-site-association должен быть обслужен https:// без перенаправлений.

Тем не менее, похоже, что вы пытаетесь служить содержанию apple-app-site-association файл для каждой универсальной ссылки. Это неправильная реализация - файл AASA хранится только в https://example.com/apple-app-site-association, и iOS автоматически получает его, когда приложение установлено. После этого любой URL на example.com который соответствует критериям в файле AASA, будет иметь право на универсальные ссылки.

Все это говорит о том, что вы действительно не хотите создавать эту систему самостоятельно. Я предлагаю заглянуть в Firebase Dynamic Links или https://branch.io/ (полное раскрытие: я в команде Branch).

1) Действительно ли невозможно обойти запрос подтверждения, используя пользовательскую схему URL (myscheme://)? Если это не невозможно, как я могу это сделать?

Это возможно

1) установите схему своего приложения как myapp

2) создайте следующий HTML-файл и поместите его в Интернет

<html>
  <head>
    <link rel="apple-touch-icon" href="https://myapp.com/path/to/shortcut-icon.png" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
  </head>
  <script>
    window.onload = function() {
      if (("standalone" in window.navigator) && window.navigator.standalone) {
        window.location.href = 'myapp://open'
      }
    }
  </script>
</html>

3) открыть HTML-файл с Safari и "добавить на главный экран"

4) откройте значок главного экрана, и ваше родное приложение запустится

Дело в метатеге.

<meta name="apple-mobile-web-app-capable" content="yes" />

Без этого запустится сафари и появится запрос подтверждения.

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