> В чем разница универсальных и обычных диплинков и почему универсальные работают на iOS и Android (iOS, Swift, Android)

Уровень: senior · Роль: qa · Категория: Технические вопросы

Компании: Ozon

Стек: iOS, Swift, Android

> Пример ответа

Короткий ответ

Универсальные диплинки (Universal Links на iOS и App Links на Android) - это HTTP(S)-ссылки, которые открывают приложение без участия браузера и без запроса подтверждения. Обычные диплинки используют кастомные схемы (например, myapp://), которые требуют регистрации и часто показывают системный диалог "Открыть в приложении?". Универсальные работают на обеих платформах, потому что используют стандартный протокол HTTPS и проверку цифровой подписи через файл apple-app-site-association (iOS) или assetlinks.json (Android).

Подробное объяснение

Обычные диплинки (custom scheme) - это ссылки вида myapp://path. Они работают только если приложение уже установлено, и система при первом переходе спрашивает пользователя, хочет ли он открыть приложение. На iOS такие ссылки не работают из браузера Safari напрямую - нужен промежуточный шаг. На Android они могут перехватываться другими приложениями, зарегистрировавшими ту же схему.

Универсальные диплинки - это обычные HTTPS-ссылки на ваш домен. Система при переходе по ссылке проверяет:

  • на iOS: наличие файла apple-app-site-association на домене, в котором указаны appID и пути, доступные приложению;
  • на Android: наличие файла assetlinks.json с SHA-256 fingerprint вашего signing certificate.

Если проверка проходит, система открывает приложение напрямую, без браузера и без диалога. Если приложение не установлено - ссылка открывается в браузере на вашем сайте, что позволяет сделать fallback (например, на страницу в App Store).

Ключевое преимущество универсальных диплинков - единый формат для обеих платформ: одна и та же ссылка https://example.com/product/123 работает и на iOS, и на Android. Это упрощает маркетинг, email-рассылки и веб-интеграции.

На практике

Для QA важно проверять:

  • корректность файлов ассоциации на сервере (доступность по HTTPS, правильный content-type);
  • поведение при установленном и неустановленном приложении;
  • обработку deep link при холодном и тёплом старте;
  • передачу параметров (query, path) в приложение;
  • конфликты с обычными диплинками, если они тоже зарегистрированы.

Пример кода

На iOS в AppDelegate:

SWIFT
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL else { return false }
// обработка url
return true
}

На Android в MainActivity:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val intent = intent
    val action = intent.action
    val data: Uri? = intent.data
    // обработка data
}

Как отвечать на собеседовании

Начните с определения обоих типов, затем перейдите к механизму проверки домена. Подчеркните, что универсальные диплинки - это не магия, а стандартный HTTPS + файлы ассоциации. Упомяните, что на iOS используется apple-app-site-association, на Android - assetlinks.json. Обязательно скажите про fallback в браузер, если приложение не установлено. Если спросят про ограничения - упомяните, что Universal Links не работают в некоторых WebView и требуют HTTPS.

Что проверяет интервьюер

Интервьюер оценивает:

  • понимание разницы между custom scheme и HTTPS-ссылками;
  • знание механизма проверки домена и файлов ассоциации;
  • понимание жизненного цикла deep link (холодный/тёплый старт);
  • умение объяснить, почему универсальные диплинки безопаснее (нет конфликтов схем, проверка подписи);
  • способность описать edge cases: неустановленное приложение, редиректы, WebView.

Типичные ошибки

  • Путаница между Universal Links и App Links - это разные реализации одной идеи.
  • Утверждение, что универсальные диплинки работают без интернета - нет, проверка файла ассоциации требует сети.
  • Игнорирование того, что на iOS Universal Links не работают в WKWebView без дополнительной настройки.
  • Забывают про необходимость HTTPS и валидного сертификата.
  • Не упоминают, что приложение должно быть установлено - иначе ссылка открывается в браузере.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью