Sobes.tech
Назад к вопросам
Junior — Middle
94

Как реализована и каким образом осуществляется обработка глубоких ссылок внутри приложений?

Компании, где спрашивали
Мой СкладМой Склад

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Глубокие ссылки позволяют открыть приложение сразу на нужном экране или с нужными данными. В Android это обычно делается через Intent с data-URI, scheme/host/path и фильтры в AndroidManifest.xml. В современных приложениях часто используют App Links, чтобы ссылка из браузера открывала именно приложение.

Определение:

Глубокая ссылка — это URI, который ведёт не просто в приложение, а в конкретный его раздел: карточку товара, профиль, статью и т. п. Android обрабатывает такие ссылки через Intent-механику: система сопоставляет URI с intent-filter у Activity, после чего передаёт ссылку в приложение.
Если приложение не установлено, обычная deep link-ссылка может открыть браузер или другое приложение; App Links дополнительно связывают домен с приложением через верификацию.

Пример использования:

Пользователь открывает ссылку https://example.com/products/42. Система видит, что у приложения есть intent-filter на этот домен и путь, и запускает нужную Activity, которая читает ID товара из Uri и открывает экран товара.

<!-- AndroidManifest.xml -->
<activity android:name=".ProductActivity">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:scheme="https"
            android:host="example.com"
            android:pathPrefix="/products" />
    </intent-filter>
</activity>
class ProductActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val uri = intent?.data
        val productId = uri?.lastPathSegment
        // Открыть экран товара с productId
    }
}

Пояснение кода:

  1. В AndroidManifest.xml добавлен intent-filter для ACTION_VIEW, чтобы Activity могла открываться по ссылке.
  2. Категория BROWSABLE разрешает запуск из внешних источников, например из браузера или мессенджера.
  3. В блоке data задано, какие ссылки обрабатывает экран: схема https, хост example.com, путь начинается с /products.
  4. При открытии ссылки система создаёт Intent, а приложение получает Uri через intent.data.
  5. В Activity нужно распарсить Uri, достать параметр или сегмент пути и по нему загрузить нужные данные.

Ключевые моменты:

  • Deep link в Android — это обработка внешней ссылки через Intent и intent-filter.
  • Для работы из браузера нужны ACTION_VIEW и CATEGORY_BROWSABLE.
  • Ссылка сопоставляется по схеме, хосту, пути и иногда query-параметрам.
  • App Links — это deep links для HTTPS-доменов с проверкой владения доменом.
  • В приложении важно валидировать входящий Uri, чтобы не полагаться на внешний ввод без проверки.
  • После получения ссылки обычно нужно выполнить навигацию на конкретный экран и подгрузить данные по идентификатору.