Универсальная ссылка или глубокая ссылка — это сопоставление URL-адреса с вашим приложением, которое, если пользователь откроет ссылку на своем устройстве iOS, нажав где-нибудь, откроет приложение и покажет нужный экран. Если приложение не установлено, оно откроет браузер Safari и отобразит веб-приложение или может предложить пользователю установить приложение.
В приложении правый экран не будет отображаться автоматически. Как разработчик, вы должны создать эту функциональность.
Вот как реализовать универсальную ссылку в приложении SwiftUI:
- Добавьте права для ваших доменов
- Создайте ассоциацию сайта-приложения-яблока и добавьте ее на свой веб-сайт.
- Реализовать функционал в приложении
Универсальные ссылки доступны в iOS версии 9 и выше и работают, даже если приложение не установлено на устройстве пользователя. При нажатии на ссылку на ваш сайт без установленного приложения пользователь будет связан с вашим сайтом в Safari. Таким образом, и ваш веб-сайт, и ваше приложение работают с одним URL-адресом.
1. Добавьте разрешение для своего домена
На первом этапе вы должны владеть доменом или поддоменом. Затем добавьте домен или субдомен в свой проект XCode.
- Выберите цель и коснитесь «Подписание и возможности».
- Нажмите кнопку «+» и введите «asso», он покажет вам «Связанные домены».
Теперь добавьте домен или поддомен с префиксом «applinks» в разделе связанных доменов.
applinks:yourwebsite.com
2. Создайте ассоциацию сайта-приложения-яблока и добавьте ее на свой веб-сайт.
Чтобы поддерживать связанные домены в приложении, вам необходимо сделать следующее:
- Создайте в любом месте новый файл с именем apple-app-site-association без расширения. Технически это файл JSON.
- Теперь напишите следующий код.
{ "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 здесь.