Универсальная ссылка или глубокая ссылка — это сопоставление URL-адреса с вашим приложением, которое, если пользователь откроет ссылку на своем устройстве iOS, нажав где-нибудь, откроет приложение и покажет нужный экран. Если приложение не установлено, оно откроет браузер Safari и отобразит веб-приложение или может предложить пользователю установить приложение.

В приложении правый экран не будет отображаться автоматически. Как разработчик, вы должны создать эту функциональность.

Вот как реализовать универсальную ссылку в приложении SwiftUI:

  1. Добавьте права для ваших доменов
  2. Создайте ассоциацию сайта-приложения-яблока и добавьте ее на свой веб-сайт.
  3. Реализовать функционал в приложении

Универсальные ссылки доступны в iOS версии 9 и выше и работают, даже если приложение не установлено на устройстве пользователя. При нажатии на ссылку на ваш сайт без установленного приложения пользователь будет связан с вашим сайтом в Safari. Таким образом, и ваш веб-сайт, и ваше приложение работают с одним URL-адресом.

1. Добавьте разрешение для своего домена

На первом этапе вы должны владеть доменом или поддоменом. Затем добавьте домен или субдомен в свой проект XCode.

  • Выберите цель и коснитесь «Подписание и возможности».
  • Нажмите кнопку «+» и введите «asso», он покажет вам «Связанные домены».

Теперь добавьте домен или поддомен с префиксом «applinks» в разделе связанных доменов.

applinks:yourwebsite.com

2. Создайте ассоциацию сайта-приложения-яблока и добавьте ее на свой веб-сайт.

Чтобы поддерживать связанные домены в приложении, вам необходимо сделать следующее:

  1. Создайте в любом месте новый файл с именем apple-app-site-association без расширения. Технически это файл JSON.
  2. Теперь напишите следующий код.
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "ABCDEF.net.mytestingapp.staging",
                "paths": [ "*"]
            },
            {
                "appID": "ABCDEFGH.net.mytestingapp.prod",
                "paths": [ "*" ]
            }
        ]
    }
}

Что ж, ключи appIDs и apps определяют идентификаторы приложений для приложений, доступных для использования на этом веб-сайте, а также их типы услуг. Используйте следующий формат для значений этих ключей:

<Application Identifier Prefix>.<Bundle Identifier>

Если у вас нет отдельного приложения, используйте один блок в разделе «Подробности».

Обычно «Префикс идентификатора приложения» — это «Идентификатор команды», который вы найдете в своей учетной записи разработчика Apple.

Для путей я использовал * для поддержки любого пути. Но если вы не хотите поддерживать какой-то путь с вашего сайта, вы можете следовать документации Apple здесь.

Теперь создайте каталог .well-known и сохраните в нем этот файл. И залить все это на свой хостинг.

Таким образом, URL-адрес будет выглядеть так:

https://<fully qualified domain>/.well-known/apple-app-site-association

Поэтому после того, как вы загрузите файл, вы можете просматривать его, и он должен отображать содержимое JSON в виде обычного текста. В противном случае это не сработает.

3. Реализуйте функциональность в своем приложении

В первые дни у нас были файлы SceneDelegate и AppDelegate в приложении на основе SwiftUI. Итак, если ваше приложение из тех дней, реализуйте следующие функции в SceneDelegate

  • Вы должны искать активность пользователя в двух местах. Один в методе willConnectTo, а другой в методе continue userActivity.
  • Чтобы определить общую функцию processUserAcivity и вызвать в этих двух местах
  • processUserAcivity проверит, содержит ли активность какие-либо webpageURL или нет. Если это так, он будет использовать эти данные.
  • В своем приложении я определил еще две вспомогательные функции. Один из них — getUniversalLinkPathComponentsAndParams и processUniversalLinkData для анализа универсальной ссылки.

Если у вас есть новое приложение SwiftUI, в котором нет AppDelegate и SceneDelegate, вы можете определить функциональность просто в файле app.

Здесь в .onOpenURL вы можете вызвать getUniversalLinkPathComponentsAndParams и processUniversalLinkData для разбора универсальной ссылки.

Чтобы протестировать универсальные ссылки, напишите ссылки в Apple’s Note или любом подобном приложении. И коснитесь ссылки на своем устройстве. Если это не работает, нажмите на некоторое время, чтобы увидеть меню, в котором вы можете выбрать параметры приложения или браузера.

Пока вы тестируете приложение во время разработки, запустите приложение на своих устройствах iOS из XCode и проверьте терминал, чтобы увидеть, работает оно или нет.

Чтобы узнать, как тестировать универсальные ссылки, ознакомьтесь с документацией Apple здесь.