- Теория Universal Links
- Подробная информация об универсальных ссылках в официальной документации Apple
Универсальные ссылки позволяют открывать web-ссылку в мобильном приложении, если оно установлено, а если приложения нет – открывается страница платформы в веб браузере.
Пример: https://<domain.com>/platform/support/pages/profile/7905
В отличие от deeplink, Universal Links открывают ваше приложение напрямую, без запроса у пользователя, создавая более интегрированный и удобный для пользователя опыт.
Поэтому можно не задумываться о наличии у пользователя приложения, переход по ссылкам из почты и мессенджеров будет всегда работать. Также это полезно при рассылках по почте – с компьютера будет открыт браузер и Почта в нем, а на айфоне приложение.
Связать приложение с доменом (домен может быть как собственный, так и рекламных трекеров) в настройках приложения через XCode;
У iOS есть список Associated Domains всех приложений, которые установлены сейчас на телефоне.
iOS соотносит с каждым appID приложения из этого списка и проверяет, установлено ли приложение или нет:
- appID присутствует => iOS пытается открыть ее, как универсальную;
- iOS не нашла ни одного установленного appID - ссылка открывается в Safari;
Если приложение установлено, то далее идет поиск универсальная ссылки по paths, где path одна из paths в apple-app-site-association (AASA):
- если она начинается с Associated Domains/path - откроется приложение.
- Если среди paths установленных приложений нет подходящего, то ссылка открывается в Safari.
Файл AASA должен быть размещен в JSON-формате без расширений на сервере вашего веб-сайта с определенным URL-путем. Этот файл должен быть храниться в корневом каталоге домена, доступного по HTTPS, поэтому убедитесь, что на вашем веб-сайте установлен сертификат SSL.
Убедитесь, что файл имеет правильный формат и соответствует спецификациям Apple
Файл должен быть доступен по адресу https://<mydomain>/apple-app-site-association
и убедитесь, что тип содержимого файла - application/json. Файл должен иметь следующее содержание:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAM_ID.APP_BUNDLE_ID",
"paths": [ "/path/to/content/*", "/another/path/*" ]
}
]
}
}
После того, как вы сгенерировали и разместили файл AASA, вам нужно будет настроить свой веб-сайт для поддержки Universal Links. Это включает в себя добавление некоторой HTML-разметки и метаданных на страницы вашего веб-сайта.
Разметка HTML включает добавление тега ссылки «apple-app-site-association» в раздел заголовка вашего HTML-документа, указывающего на местоположение вашего файла AASA. Кроме того, вам нужно будет добавить метатег «applinks», чтобы указать проверенный домен веб-сайта.
Внутри приложения универсальные ссылки можно обрабатывать, реализуя специальный метод UIApplicationDelegate делегата приложения — application:continueUserActivity:restorationHandler:
.
// ⭐️ - 8.1) universal link (Пример: https://...)
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void
) -> Bool
На рисунке это 8.1 метод:
iOS вызовет 8.1 метод и описанную реализацию дальнейшего потока приложения при нажатии универсальной ссылки, настроив поведение и перенаправление на основе входящей активности пользователя.
Deeplink vs Universal Links
- Установка приложения
- Универсальные ссылки устраняют необходимость установки приложения и предлагают более плавный путь;
- Deeplink не будут работать без предустановленного приложения;
- Разные методы внутри UIApplicationDelegate
- Универсальные ссылки -
application:continueUserActivity:restorationHandler:
метод; - Deeplink -
open url: URL
метод;
- Поиск в Xcode
- Универсальные ссылки - Scheme - Signing & Capabilities - Associated Domains - applinks:...;
- Deeplink - Scheme - Info - URL Types - URL schemes;
- Безопасность
- Универсальные ссылки - имеют SSL сертификат;
- Deeplink - не имеют
4.2.2.2 DeepLink Theme | Back To iOSWiki Contents | 4.2.3 Persistance Theme Folder