В чем разница между app link и deep link?
Комментарии (3)
Ответ сгенерирован нейросетью и может содержать ошибки
Различие между App Link и Deep Link
В Android-разработке Deep Link и App Link — это два взаимосвязанных, но принципиально разных механизма для навигации пользователей к конкретному контенту внутри приложения. Основное различие заключается в верификации владения доменом и поведении системы при обработке ссылок.
Deep Link (Глубокая ссылка)
Deep Link — это общий термин для любой ссылки, которая ведет пользователя в конкретное место внутри приложения, а не просто открывает его стартовый экран. В контексте Android это часто реализуется через Intent Filter в AndroidManifest.xml.
Ключевые характеристики:
- Не требует верификации домена: Ссылка может использовать кастомную схему (например,
myapp://details/123) или HTTP/HTTPS URL. - Выбор приложения: При нажатии на HTTPS Deep Link система покажет диалог выбора приложения (Disambiguation Dialog), если несколько приложений зарегистрировали один и тот же Intent Filter.
- Уязвимость для подмены: Поскольку владение доменом не проверяется, злонамеренное приложение может зарегистрировать те же фильтры и перехватывать ссылки.
- Основное применение: Внутренняя навигация, ссылки из push-уведомлений, переходы из других приложений, где контроль над доменом невозможен.
Пример объявления Deep Link в манифесте:
<activity android:name=".ProductActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Используется HTTP-схема без строгой привязки -->
<data android:scheme="https"
android:host="example.com"
android:pathPrefix="/product" />
</intent-filter>
</activity>
App Link (Верифицированная глубокая ссылка)
App Link — это особая, более безопасная разновидность Deep Link для HTTP/HTTPS URL, представленная в Android 6.0 (API 23). Ключевая особенность — цифровая верификация, подтверждающая, что конкретный домен принадлежит вашему приложению.
Ключевые характеристики:
- Требует верификации домена: Вы должны разместить на своем сайте
assetlinks.json(Digital Asset Links), который связывает домен с отпечатком вашего сертификата подписи приложения. - Автоматическое открытие: После успешной верификации система Android автоматически открывает ваше приложение без диалога выбора. Это создает бесшовный пользовательский опыт, как при переходе между веб-страницами.
- Защита от подмены: Другие приложения не могут зарегистрироваться для обработки ваших верифицированных ссылок, что повышает безопасность.
- Требует HTTPS: Работает только со схемами
https(илиhttpдля локальной отладки с флагами).
Пример файла assetlinks.json для верификации:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourcompany.yourapp",
"sha256_cert_fingerprints": [
"FA:2C:...:Ваш_отпечаток_сертификата"
]
}
}
]
Файл должен быть доступен по адресу: https://example.com/.well-known/assetlinks.json.
Сравнительная таблица
| Критерий | Deep Link | App Link |
|---|---|---|
| Схемы | http, https, custom (myapp://) | Только https (основная), http (отладка) |
| Верификация домена | Не требуется | Обязательна (Digital Asset Links) |
| Поведение при клике | Диалог выбора приложения | Прямой запуск вашего приложения |
| Безопасность | Ниже (возможна подмена) | Выше (защита от перехвата) |
| Минимальный API | Любой | Android 6.0 (API 23) для автоматического открытия |
| Основная цель | Общая глубокая навигация | Бесшовная интеграция веб-сайта и приложения |
Выводы и рекомендации
На практике выбор зависит от сценария:
- Используйте App Links, когда вы контролируете домен и хотите обеспечить нативный, бесшовный переход с вашего сайта в приложение (например, для мобильных пользователей, открывающих ссылку из письма). Это лучший пользовательский опыт.
- Используйте Deep Links (особенно с кастомными схемами) для:
* Внутренних коммуникаций (уведомления, виджеты).
* Сценариев, где использование HTTPS-домена невозможно или нецелесообразно.
* Обратной совместимости с версиями Android ниже 6.0.
Важно: Для надежной реализации App Links необходимо правильно настроить Intent Filter в манифесте, подписать APK релизным сертификатом, корректно сгенерировать и разместить файл assetlinks.json, а также протестировать верификацию с помощью инструментов adb shell pm verify-app-links и онлайн-валидаторов от Google.