← Назад к вопросам

Что такое Universal Links?

1.2 Junior🔥 151 комментариев
#Работа с сетью

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Universal Links?

Universal Links — это технология компании Apple, позволяющая приложениям и веб-страницам взаимодействовать напрямую, без участия промежуточных компонентов, таких как URI Scheme или перенаправления через веб. Это официальный и безопасный механизм для глубокой интеграции веб-контента и нативных iOS/macOS приложений.

Основные принципы и цели

Ключевая цель Universal Links — создание бесшовного пользовательского опыта:

  • Прямое открытие в приложении: Когда пользователь кликает на ссылку в Safari, сообщении (Mail, Messages) или стороннем приложении, система iOS проверяет, связано ли целевое URL с установленным на устройстве приложением. Если связь подтверждена, ссылка открывается непосредственно в приложении, минуя Safari.
  • Возврат к веб-версии: Если приложение не установлено, ссылка открывается в Safari, как обычная веб-страница. Это обеспечивает непрерывность функционала.
  • Безопасность и уникальность: Механизм предотвращает конфликты и "захват" ссылок, поскольку связь между приложением и доменом должна быть верифицирована через цифровую подпись (ассоциацию файлов) на стороне сервера. Это делает технологию безопаснее устаревших Custom URL Schemes.

Техническая реализация: ключевые компоненты

Для работы Universal Links необходимо выполнить три основных шага:

  1. Подготовка сервера: файл apple-app-site-association (AASA)
    Этот JSON-файл без расширения должен быть размещен на вашем веб-сервере в корне домена (или в директории `.well-known`). Он содержит цифровую подпись приложения и список путей (paths), которые должны открываться в приложении.

```json
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAMID.BundleID",
                "paths": ["/articles/*", "/news/2024/*", "/account", "/NOT/legal/*"]
            }
        ]
    }
}
```
    *   **`appID`**: Уникальный идентификатор, состоящий из Team ID (из Apple Developer Account) и Bundle Identifier приложения.
    *   **`paths`**: Массив строк, определяющих URL-пути на вашем сайте, которые будут обрабатываться приложением. Поддерживаются символы `*` (любая последовательность символов) и `?` (один символ). Можно также указывать исключения с `NOT`.

  1. Конфигурация приложения: Entitlements и обработка в коде
    В проекте Xcode необходимо:
    *   Добавить **Associated Domains** entitlement в настройках проекта (или в файле `.entitlements`). Домен указывается в формате: `applinks:<yourdomain.com>`.
    *   Реализовать обработку входящих ссылок в `AppDelegate` или `SceneDelegate` через метод `application(_:continueUserActivity:restorationHandler:)`. Тип `userActivity` должен быть `.browsingWeb`.

```swift
func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let incomingURL = userActivity.webpageURL else {
        return false
    }
    // Парсинг URL и переход к соответствующему контенту внутри приложения
    handleIncomingUniversalLink(incomingURL)
    return true
}

private func handleIncomingUniversalLink(_ url: URL) {
    // Пример: открыть конкретный экран статьи
    if url.path.hasPrefix("/articles") {
        let articleID = url.lastPathComponent
        navigateToArticleScreen(withID: articleID)
    }
}
```

3. Генерация ссылок на веб-страницах

    Ссылки на сайте должны быть обычными абсолютными HTTPS-ссылками на ваш домен, например: `https://yourdomain.com/articles/123`.

Преимущества и сравнение с другими методами

  • В сравнении с Custom URL Schemes (myapp://open): Universal Links безопасны (нельзя "захватить" домен), не требуют подтверждения пользователя при первом открытии и обеспечивают fallback на веб-версию. Custom Schemes могут конфликтовать между приложениями и часто вызывают диалог "Open in..." без альтернативы.
  • В сравнении с Smart App Banners: Бanners лишь предлагают открыть приложение, но не автоматизируют процесс. Universal Links делают это автоматически и незаметно для пользователя.

Практические сценарии использования

Universal Links идеальны для:

  • Электронная коммерция: Пользователь, кликнувший на ссылку товара в email, сразу попадает в приложение на странице этого товара.
  • Социальные сети и медиа: Ссылки на профили, статьи или видео открываются прямо в нативном приложении.
  • Банкинг и финансы: Глубокие ссылки на конкретные операции или страницы входа.
  • Кроссплатформенные сервисы: Обеспечение единого опыта между веб-сайтом и мобильным приложением.

Ограничения и важные замечания

  • Требуется поддержка HTTPS: Домен должен обслуживаться по HTTPS.
  • Проверка файла AASA: iOS загружает и проверяет файл apple-app-site-association при первом запуске приложения или в определенных условиях. Необходимо обеспечить его доступность без авторизации.
  • Конфликты с другими приложениями: Если несколько приложений на устройстве ассоциированы с одним доменом, iOS покажет диалог выбора (но это редкая ситуация).
  • Long Press и контекстное меню: В Safari при долгом нажатии на ссылку, связанную с Universal Link, появится опция "Open in [App Name]", что повышает удобство.

В заключение, Universal Links — это мощный, безопасный и стандартизированный инструмент для глубокой интеграции веб- и мобильного опыта в экосистеме Apple, который значительно улучшает взаимодействие пользователя с сервисом, делая его быстрым и контекстно-зависимым.

Что такое Universal Links? | PrepBro