> В чем разница универсальных и обычных диплинков и почему универсальные работают на 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:
SWIFTfunc application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,let url = userActivity.webpageURL else { return false }// обработка urlreturn 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 и валидного сертификата.
- Не упоминают, что приложение должно быть установлено - иначе ссылка открывается в браузере.
> Похожие задачи по qa
Что нового в последних версиях Android и iOS с точки зрения тестирования?
Почему iOS более закрытая система, а Android более открытая по доступности приложений
Где происходит настройка диплинков в Android и iOS?
Как оценить время тестирования приложения на Android и iOS по описанным кейсам?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью