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

Как добавить Deep Link в приложение

2.0 Middle🔥 182 комментариев
#Android компоненты#Жизненный цикл и навигация

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

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

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

Как добавить Deep Link в приложение

Deep Link (или URI-ссылка) — это механизм, позволяющий открывать определенные экраны или выполнять действия в Android приложении напрямую из внешних источников: веб-страниц, других приложений, push-уведомлений или поисковых систем. Реализация состоит из нескольких ключевых этапов: объявления ссылок в манифесте, обработки входящих Intent'ов в Activity и создания корректных URI-шаблонов.

1. Определение Deep Link в AndroidManifest.xml

Основной шаг — объявить Intent Filter для нужной Activity в файле AndroidManifest.xml. Фильтр должен содержать схему (scheme), домен (host) и путь (path) или паттерн пути (pathPattern/pathPrefix).

<activity android:name=".ProductDetailActivity">
    <intent-filter>
        <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="myapp.example.com"
              android:pathPrefix="/product" />
    </intent-filter>

    <!-- Альтернативный пример с кастомной схемой (app://) -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="app"
              android:host="products"
              android:pathPattern="/.*" />
    </intent-filter>
</activity>

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

  • action VIEW — указывает, что Activity может просматривать данные.
  • category BROWSABLE — позволяет открывать ссылки из браузера.
  • data — описывает структуру URI. Использование https рекомендуется для лучшей совместимости с современными системами (Android App Links).

2. Обработка входящего Intent в Activity

После объявления фильтра, необходимо обработать входящий Intent в целевой Activity. Данные URI извлекаются через Intent.getData().

class ProductDetailActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_product_detail)

        handleDeepLink(intent)
    }

    override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        handleDeepLink(intent)
    }

    private fun handleDeepLink(intent: Intent?) {
        val uri = intent?.data
        if (uri != null) {
            // Пример: https://myapp.example.com/product?id=123
            val productId = uri.getQueryParameter("id")
            if (productId != null) {
                // Загружаем и отображаем данные продукта
                loadProductDetails(productId)
            } else {
                // Обработка некорректной ссылки
                showError("Invalid deep link")
            }
        }
    }

    private fun loadProductDetails(id: String) {
        // Логика загрузки данных (например, из API или базы)
    }
}

Важно обрабатывать и onCreate() (первое открытие), и onNewIntent() (если Activity уже создана и получает новый Intent).

3. Тестирование и валидация Deep Links

Для проверки работоспособности можно использовать ADB (Android Debug Bridge):

adb shell am start -W -a android.intent.action.VIEW -d "https://myapp.example.com/product?id=456" com.example.myapp

Или создать тестовую веб-страницу с ссылкой:

<a href="https://myapp.example.com/product?id=789">Open Product in App</a>

Для Android App Links (верифицированных HTTPS ссылок) требуется дополнительная настройка Digital Asset Links для подтверждения владения доменом и предотвращения перехвата ссылок другими приложениями.

4. Рекомендации и лучшие практики

  • Валидация данных: всегда проверяйте параметры URI на корректность (наличие, тип, диапазон значений).
  • Fallback обработка: если приложение не установлено, HTTPS ссылки могут открыть веб-версию. Для этого нужна соответствующая веб-страница.
  • Логирование: добавляйте логи для анализа использования Deep Links.
  • Безопасность: не доверяйте данным из ссылок без проверки, особенно в финансовых или приватных сценариях.

Таким образом, добавление Deep Link включает декларативную часть (манифест) и программную обработку (Activity). Этот механизм значительно улучшает пользовательский опыт, позволяя seamlessly интегрировать приложение в экосистему Android и веб.

Как добавить Deep Link в приложение | PrepBro